3-longest-substring-without-repeating-characters
无重复字符的字符串题目链接
解题思路滑动窗口
go代码123456789101112131415161718192021222324func lengthOfLongestSubstring(s string) int { str := make(map[byte]int) n := len(s) rk, ans := -1, 0 for i := 0; i < n; i++ { if i != 0 { delete(str, s[i-1]) } for rk+1 < n && str[s[rk+1]] == 0 { str[s[rk+1]]++ rk++ } if ans < rk+1-i { ans = rk + 1 - i } } return ans}
45-jump-game-ii
跳跃游戏题目链接
题目思路贪心算法
go题目思路12345678910111213141516func jump(nums []int) int { l := 0 end := 0 maxl := 0 for i := 0; i < len(nums) -1; i++ { if nums[i]+i > maxl { maxl = nums[i] + i } if i == end { end = maxl l++ } } return l}
202-happy-number
快乐数字题目链接
解体思路这题这要判断下这个快乐数循环中是否出现重复的值即可,有重复的值他就会无线循环就不是快乐数字
go解体思路123456789101112131415161718192021222324func isHappy(n int) bool { var num map[int]int num = make(map[int]int) num[n] = 1 for n != 1 { if num[n] > 1 { return false } tmp := 0 for n != 0 { tmp += (n % 10) * (n % 10) n /= 10 } n = tmp _, ok := num[n] if ok != false { return false } else { num[n] = 1 } } return true}
961-repeated-element-insize
找重复n词的数字题目链接
思路索引值数量
go解法<++>
1234567891011func repeatedNTimes(A []int) int { var mp [10001]int for _,value := range A { mp[value]++ if mp[value] > 1 { return value } } return -1}
interview-56
数字中之出现一次的数字题目链接
题目思路位运算 即可
go解法12345678910111213141516171819202122232425func singleNumbers(nums []int) []int { numbers := make([]int, 2) var flag int for i := 0; i < len(nums); i++ { flag ^= nums[i] } div := 1 for (div & flag) == 0 { div <<= 1 } numbers[0] = 0 numbers[1] = 0 for i := 0; i < len(nums); i++ { if (div & nums[i]) == 0 { numbers[0] ^= nums[i] } else { numbers[1] ^= nums[i] } } return numbers}
79-word-search
单词搜索题目链接
题目思路先判断第一个是否相等 然后传进dfs函数对四个方向进行判断
go 解法123456789101112131415161718192021222324252627282930313233343536373839404142var flag, m, n intvar dx = []int{1, 0, -1, 0}var dy = []int{0, 1, 0, -1}func dfs(board [][]byte, tx, ty int, word string) { if len(word) == 0 { flag = 1 return } if flag == 1 || tx < 0 || ty < 0 || tx >= m || ty >= n { return } if board[tx][ty] != word[0] { return } tmp := board[tx][ty] board[tx][ty] ...
136-single-number
只出现一次的数字题目链接
题目思路a^a=0a^0=a
go解题思路12345678func singleNumber(nums []int) int { a := 0 for _, v := range nums { a ^= v } return a}
17-letter-combinations-of-a-phone-number
题目链接
电话号码的字母组合题目思路对数字进行dfs搜索即可
go题目解法12345678910111213141516171819202122232425var dic = []string{ "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz",}func dfs(nums *[]string, num, tmp string) { if len(num) == 0 { *nums = append(*nums, tmp) return } l := num[0] - '0' for i := 0; i < len(dic[l]); i++ { dfs(nums, num[1:], tmp+string(dic[l][ ...
46-permutations
全排列题目链接
思路对数组进行递归,每一次消除用了的元素,直到数组为空
go解题123456789101112131415161718192021222324252627var nlen intfunc dfs(num []int, nums *[][]int, tmp []int) { l := len(num) if l == 1 { tmp = append(tmp, num[0]) *nums = append((*nums), tmp) return } for i := 0; i < l; i++ { num[i], num[0] = num[0], num[i] dfs(num[1:], nums, append(tmp, num[0])) num[0], num[i] = num[i], num[0] }}func permute(nums []int) [][]int { var num [][]int nlen = len(nums) if nlen == 0 { ...
12-integer-to-roman
数字转罗马数字题目链接
题目思路从大到小判断如果value的值大于num就相减
go解法1234567891011121314151617func intToRoman(num int) string { sum := "" value := []int{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1} key := []string{ "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I", } for i := 0; i < 13; i++ { for num >= value[i] ...