日刷leetcode--简单版(三)
返回总目录
58. 最后一个单词的长度
题目描述
解题思路
- 定义一个变量统计,从前往后遍历,遇到空格归零就可以了,注意处理最后几个个字符全为空格的情况
- 定义一个变量统计,从后往前便利,虽然时间复杂度同为 O(n),但是第二个明显快很多
示例代码
1 | func lengthOfLastWord(s string) int { |
运行结果
执行用时 :0 ms, 在所有 Go 提交中击败了 100.00%的用户
内存消耗 :2.2 MB, 在所有 Go 提交中击败了 39.13%的用户
66.加一
题目描述
解题思路
- 从后面往前面循环,最后以一位加 1 即可,处理好末尾
9
与999
1 | func plusOne(digits []int) []int { |
运行结果
执行用时 :0 ms, 在所有 Go 提交中击败了 100.00%的用户
内存消耗 :2.2 MB, 在所有 Go 提交中击败了 30.57%的用户
67.二进制求和
题目描述
解题思路
- 判断两个字符串的大小,保证 a 为较长的一个
- 从后往前循环相加,先循环较短的字符串,再循环长字符串剩余的,定义一个变量记录是否需要进位,两个字符串相加是需要加上进位的值
- 最后判断进位值是否为 0,不为 0 则在相加后字符串最前面一位加 1
示例代码
1 | func addBinary(a string, b string) string { |
运行结果
执行用时 :0 ms, 在所有 Go 提交中击败了 100.00%的用户
内存消耗 :2.3 MB, 在所有 Go 提交中击败了 68.18%的用户
69. x 的平方根
题目描述
解题思路 1
- 使用官方包 math.Sqrt,然后提取整数部分即可(不提供代码)
解题思路 2
- 使用二分法,判断中位数的积是否大于 x,是则右边向左移,否则左边直接等于中位数
- 注意的是取中位数是要取右中位数,也就是要加1,不然会死循环
示例代码 2
1 | func mySqrt(x int) int { |
运行结果
执行用时 :8 ms, 在所有 Go 提交中击败了 29.75%的用户
内存消耗 :2.8 MB, 在所有 Go 提交中击败了 5.23%的用户
70. 爬楼梯
题目描述
解题思路
- 这是一个标准的斐波拉切数列,所以就不多说
示例代码
1 | func climbStairs(n int) int { |
运行结果
执行用时 :0 ms, 在所有 Go 提交中击败了 100.00%的用户
内存消耗 :2 MB, 在所有 Go 提交中击败了 52.61%的用户
83. 删除排序链表中的重复
题目描述
解题思路
- 因为是排序了的,所以就相对来说比较简单,判断是否与下一个相等,相等即后移即可,讲
Next
指向Next.Next
示例代码
1 | func deleteDuplicates(head *ListNode) *ListNode { |
运行结果
执行用时 :4 ms, 在所有 Go 提交中击败了 96.46%的用户
内存消耗 :3.2 MB, 在所有 Go 提交中击败了 48.18%的用户
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 顾澜的技术小站!
评论
GitalkValine