56-merge-intervals
合并区间题目链接
解题目思路这题先排序,然后再去判断区间是否有交集,有交集就合并
go语言思路123456789101112131415161718192021222324func merge(intervals [][]int) [][]int { if len(intervals) == 0 { return intervals } sort.Slice(intervals, func(i, j int) bool { return intervals[i][0] < intervals[j][0] }) start := 0 for i := 1; i < len(intervals); i++ { fmt.Println(intervals[start][1] >= intervals[i][0]) if intervals[start][1] < intervals[i][0] { if start != i { start++ copy(inte ...
542-01-matrix
01矩阵题目链接
题目解法这题记录所有0的点,并且把1的点先标记为最大的值,然后用bfs 搜索最近的一点靠近0的步数找到最小值
go解法1234567891011121314151617181920212223242526272829303132333435363738394041type point struct { x, y int}func updateMatrix(matrix [][]int) [][]int { m, n, nums := len(matrix), len(matrix[0]), 0 var p []point for i := 0; i < m; i++ { for j := 0; j < n; j++ { if matrix[i][j] == 0 { p = append(p, point{i, j}) nums++ } else { matrix[i][j] = m * n } } ...
rotate-matrix-lcci
旋转矩阵题目链接
解体思路这题思路式数组每个元素按照对应的方位顺时针旋转 四个方块对应位置式(i,j) , (j, n-i-1) , (n-i-1, n-j-1), (n-j-1, i)
go语言实现12345678910111213func rotate(matrix [][]int) { n := len(matrix) for i := 0; i < n/2; i++ { for j := i; j < n-1-i; j++ { matrix[i][j], matrix[j][n-i-1], matrix[n-i-1][n-j-1], matrix[n-1-j][i] = matrix[n-1-j][i], matrix[i][j], matrix[j][n-i-1], matrix[n-i-1][n-j-1] fmt.Println(i, j) } } fmt.Println(matrix)}
22-generate-parentheses
匹配括号题目链接
思路这题这届枚举一下就好了,但是生成时候前括号的数一定要大于后括号
go解体犯法1234567891011121314151617181920212223func generateParenthesis(n int) []string { var par []string pair(n, n, "", &par) return par}func pair(pre, end int, sum string, par *[]string) { if pre == 0 && end == 0 { *par = append(*par, sum) return } if pre <= end { if pre >= 0 { pair(pre-1, end, sum+"(", par) } if pre < end { pair(pre, end-1, sum+")", ...
289-game-of-life
生命游戏题目链接
思路这题 所有的细胞复活和死亡式在同一时间的, 所以我们采用另一个数组来代替他下一轮的状态, 对原数组进行遍历判断周围活细胞的数量即可。 注意要判断边界,要不然会数组越界
go 语言实现12345678910111213141516171819202122232425262728293031323334353637func gameOfLife(board [][]int) { dx := []int{1, -1, 0, 0, 1, -1, 1, -1} dy := []int{1, -1, 1, -1, -1, 1, 0, 0} m := len(board) n := len(board[0]) var tmp = make([][]int, m, m) for i := 0; i < m; i++ { tmp[i] = make([]int, n, n) for j := 0; j < n; j++ { sum := 0 for k := 0; k < 8; k ...
122-best-time-to-buy-and-sell-stock-ii
买卖股票最佳时机II题目链接
思路这题思路是先找股票如果遇到更便宜的话吧最小值给他,遇到比最小值大的值在与最小值相见在取和最大的利润相比,如果今天的股票价格大于昨天的股票价格直接取前面最大利润的那次
go阶梯代码1234567891011121314151617func maxProfit(prices []int) int { var maxSum, minNum, Sum int minNum = prices[0] for i := 1; i < len(prices); i++ { if minNum >= prices[i] || prices[i] < prices[i-1] { minNum = prices[i] Sum += maxSum maxSum = 0 } else if maxSum < prices[i]-minNum { maxSum = prices[i] - minNum } } if maxSum != 0 { Sum ...
169-majority-element
多组元素题目链接
想法这个题目必有人有半数人以上得票, 所以可以用摩尔投票法进行操作。对每两个不同的元素相消, 最后可以得到一个数即为数组中多于半数的数值, 这题还有个投机取巧的方法就是快排后在取数组前半部分的任意值
摩尔投票法摩尔投票算法是一种使用线性时间和常数空间查找大部分元素序列的算法。它以1981年出版的Robert S. Boyer和J Strother Moore的名字命名,并且是流式算法的典型例子。
最简单的形式就是,查找输入中重复出现超过一半以上(n/2)的元素。如果序列中没有这种元素,算法不能检测到正确结果,将输出其中的一个元素之一。如果不能保证输入数据中有占有一半以上的元素,需要再遍历一下验证。
go语言实现1234567891011121314func majorityElement(nums []int) int { var maxNum, count int for i := 0; i < len(nums); i++ { if count == 0 { maxNum = nums[i] } ...
9-palindrome-number
题目链接
回文数字这题比较简单,直接转成字符串然后判断对应回文位置的正确即可
go 解法12345678910111213func isPalindrome(x int) bool { if x < 0 { return false } var s string = strconv.Itoa(x) slen := len(s) for i := 0; i < slen/2; i++ { if s[i] != s[slen-i-1] { return false } } return true}
121-best-time-to-buy-and-sell-stock
买卖股票最佳时间题目链接
思路这题思路是遍历数组同时记录最小的数,然后遇到比他大的数和他相减与最大利润相比取最大值,遇到比自己小的数就吧最小值替换成那该数
go语言实现12345678910111213141516171819202122func maxProfit(prices []int) int { if len(prices)==0{ return 0 } maxNum, initNum := 0, prices[0] for i := 1; i < len(prices); i++ { if initNum >= prices[i] { initNum = prices[i] } else { if maxNum == 0 { maxNum = prices[i] - initNum } else if maxNum < prices[i]-initNum { maxNum = prices[i] - i ...
倒装
否定词语放句首
hardy, seldom , in no time , no sooner…than…, not until , not only…but also.., hardly…when
Hardly can I speak Japanese
so, nor/neither 位于句首,表明承前句子的肯定或否定时用到装
I can cook ==> So can I
I can not cook ==> Nor can I
so…that 结构句子将so 应到的部分放在句首时用到装
I feel so rejoiced that I lose my sleep for the whole night
so rejoiced do I feel that I lose my sleep for the whole night
so exhausted am I that I have no energy throughout
only+状语 放在句首到装
only then, only by wa ...