twoSum

package mainfunc twoSum(nums []int, target int) []int {//    返回值为一个int数组m := make(map[int]int)//这里是初始化一个字典mapfor k, v := range nums {//循环遍历每一个num 其中k为下标 v为值if idx, ok := m[target-v]; ok {//这里将是将数组值存储为字典的键 取出来的idx就是 而这里的ok如果取出来有就是turereturn []int{idx, k}//得到就返回回去而这里的idx其实就是数组下标 而k是值}m[v] = k//如果没有取到就放入map中}return nil
}
func main() {nums := []int{2, 3, 11, 7}twoSum(nums, 9)
}

addTwoNumbers

package maintype ListNode struct {//定义一个ListNode的结构体Val int//定义本节点的值Next *ListNode// 定义下一个节点的指针变量
}func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {//head := &ListNode{Val: 0}//head 用来存储ListNode的地址n1, n2, carry, current := 0, 0, 0, head//n1 用来存放l1中的val的值 n2 ... carry用来标识进位 current 用来标识当前是那个节点for l1 != nil || l2 != nil || carry != 0 {//当三个不同时为零的时候就继续循环if l1 == nil {n1 = 0} else {n1 = l1.Vall1 = l1.Next}//主要是赋值操作if l2 == nil {n2 = 0} else {n2 = l2.Vall2 = l2.Next}current.Next = &ListNode{Val: (n1 + n2 + carry) % 10}//这步目的是存放下一个ListNode的值current = current.Next//当前指向的节点进行更改carry = (n1 + n2 + carry) / 10//对进位进行处理}return head.Next// 这步返回的不是第一个节点而是第二个节点.因为第一个节点我们并没有使用
}

lengthOfLongestSubstring

package mainfunc lengthOfLongestSubstring(s string) int {if len(s) == 0 {return 0}var bitSet [256]bool//简单来说就是打布尔标记result, left, right := 0, 0, 0for left < len(s) {//每一个字符都要循环if bitSet[s[right]] {//但前面已经有一个出现了的时候 也就是true的时候bitSet[s[left]] = false//就打回falseleft++//左边向前移动一位} else {//因为a的ascii是97 所以当到达这里时第97就会被打成truebitSet[s[right]] = trueright++}if result < right-left {//判断当前是不是最长的如果是就改变最长的值result = right - left}if left+result > len(s) || right >= len(s) {//判断有没有越界问题break}}return result}
func lengthOfLongestSubstring1(s string) int {if len(s) == 0 {return 0}var freq [127]intresult, left, right := 0, 0, -1for left < len(s) {if right+1 < len(s) && freq[s[right+1]] == 0 {freq[s[right+1]]++right++} else {freq[s[left]]--left++}result = max(result, right-left+1)}return result}
func lengthOfLongestSubstring2(s string) int {right, left, res := 0, 0, 0indexs := make(map[byte]int, len(s))for left < len(s) {if indx, ok := indexs[s[left]]; ok && indx >= right {right = indx + 1}indexs[s[left]] = leftleft++res = max(res, left-right)}return res}
func max(a int, b int) int {if a > b {return a}return b
}
func main() {lengthOfLongestSubstring2("abcabcbb")
}

longestPalindrome

package mainfunc longestPalindrome(s string) string {if len(s) < 2 {return s}newS := make([]rune, 0)//rune为utf8类型主要用于汉字等newS = append(newS, '#')for _, c := range s {newS = append(newS, c)newS = append(newS, '#')}//   dp[i] 以预处理字符串下标i为中心的回文半径(奇数长度是不包括中心)//maxRight 通过中心扩散的方式能够扩散的最右边的下标//center 与maxRight对应的中心字符的下标//maxLen 记录最长回文串的半径//begin 记录最长回文串在起始串s中的起始下标dp, maxRight, center, maxlen, begin := make([]int, len(s)), 0, 0, 1, 0for i := 0; i < len(newS); i++ {if i < maxRight {dp[i] = min(maxRight-i, dp[2*center-i])}left, right := i-(1+dp[i]), i+(1+dp[i])for left >= 0 && right < len(newS) && newS[left] == newS[right] {dp[i]++left--right++}if i+dp[i] > maxRight {maxRight = i + dp[i]center = i}if dp[i] > maxRight {maxRight = i + dp[i]center = i}if dp[i] > maxlen {maxlen = dp[i]begin = (i - maxlen) / 2}}return s[begin : begin+maxlen]}
func min(a int, b int) int {if a < b {return a}return b
}
func main() {longestPalindrome("babad")
}func longestPalindrome2(s string) string {res := ""for i := 0; i < len(s); i++ {res = maxPalindrome(s, i, i, res)res = maxPalindrome(s, i, i+1, res)}return res}
func maxPalindrome(s string, i, j int, res string) string {sub := ""for i >= 0 && j < len(s) && s[i] == s[j] {sub = s[i : j+1]i--j++}if len(res) < len(sub) {return sub}return res
}

leetCode(GO)相关推荐

  1. leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间

    题目 解析 思路一 暴力解法 思路二 指针+最大长度 思路3 由中间至两边找回数 思路4 Manacher's algorithm 线性时间 参考文档 题目 链接 给定一个字符串 s,找到 s 中最长 ...

  2. LeetCode 10. Regular Expression Matching python特性、动态规划、递归

    前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...

  3. leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法

    题目解析 代码如下 题目解析 这一题是一道会员的题目,题目介绍如下: Given a string, find the length of the longest substring T that c ...

  4. leetcode 3. Longest Substring Without Repeating Characters 最长非重复子串的长度 滑动窗口法

    题目链接 根据我们之前介绍的滑动窗口法的解法: 滑动窗口法详解 leetcode 438. Find All Anagrams in a String 滑动窗口法 这题,我们不难解决,使用之前的模板. ...

  5. leetcode:2680 Remove Duplicates from Sorted Array 删除数组中的重复元素

    leetcode:26 对数组元素进行去重,使得原数组重复元素最多保留1个 限制: 我们不可以额外分配数组,必须保持空间复杂度为O(1) 这个并不难实现: class Solution(object) ...

  6. LeetCode简单题之二进制表示中质数个计算置位

    题目 给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数. 计算置位位数 就是二进制表示中 1 的个数. 例如, 21 ...

  7. LeetCode简单题之删除字符使字符串变好

    题目 一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 . 给你一个字符串 s ,请你从 s 删除 最少 的字符,使它变成一个 好字符串 . 请你返回删除后的字符串.题目数据保证答案总 ...

  8. LeetCode简单题之找出两数组的不同

    题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中: answer[0] 是 nums1 中所有 不 存在于 nums2 中的 ...

  9. LeetCode中等题之区域和检索 - 数组可修改

    题目 给你一个数组 nums ,请你完成两类查询. 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nu ...

  10. LeetCode简单题之整理字符串

    题目 给你一个由大小写英文字母组成的字符串 s . 一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件: 若 s ...

最新文章

  1. [转]CSS hack大全详解
  2. jquery选择器玩得不6啊,只能慢慢写判断了,唉..........................
  3. 各地实时摄像头_智能摄像头——城市治安防控的“天眼”
  4. 科技情报研究所工资_我们所说的情报是什么?
  5. 阿里上线了一款新的电商app
  6. 虚拟化五、KVM虚拟化技术2
  7. CVPR 2019 IIAI 目标计数
  8. c语言malloc和直接声明,问下关于malloc的声明问题
  9. Machine Learning——Homework 7
  10. 泰山JDK8新实现的一个字体斜体效果
  11. Django系列16-员工管理系统实战--echar图表统计
  12. python sleep函数什么意思_python中sleep函数用法实例分析
  13. android6.0重力工具箱,真正免root的重力工具箱详细使用教程
  14. html站点文件命名规范,HTML文件命名规范大全
  15. 英特尔神经计算棒_如何设置英特尔Movidius神经计算棒
  16. win10右键一直转圈_win10 系统 桌面点右键经常转圈圈卡住。
  17. 查询微信被谁投诉方法技巧
  18. Linux下Oracle 11G r2 (64位)安装
  19. matlab绘制法线信息、矢量场
  20. 几何光学学习笔记(12)- 3.9几种典型系统的理想光学系统性质 3.10 矩阵运算在几何光学中的应用

热门文章

  1. 半年时间,拍摄8省市10个案例,我们见到了这样的智能中国
  2. RK3399中文简介
  3. 后台管理系统-------登录功能@zj-zhangjie
  4. HTML5菜鸟入门指导:简介、平台搭建、示例演示
  5. Could not find a getter for userState in class com.zj.entity.Users
  6. PMP培训机构选择五大关键点!看完就会!
  7. 2.12 真实数据的噪声平滑处理
  8. Sheets与WorkSheets的区别
  9. 2022年5月9日-10日 复盘计划
  10. WiFi 4: 802.11n 白皮书