Golang刷LeetCode
使用go语言刷LeetCode题目 只为记录学习 欢迎交流学习
小羊爱吃肉
这个作者很懒,什么都没留下…
展开
-
Golang刷LeetCode 268. 丢失的数字
268. 丢失的数字代码实现func missingNumber(nums []int) int { n := len(nums) eSum := n*(n+1)/2 //求未缺失的和 aSum := 0 for _,num:= range nums{ aSum = aSum + num }//求给定数组的和 result := eSum - aSum return result}解题思路:用未缺失数字的数组和减去给定数组的和原创 2021-07-21 10:47:52 · 258 阅读 · 0 评论 -
Golang刷LeetCode 22. 括号生成
22. 括号生成代码实现:func generateParenthesis(n int) []string { if n == 0 { return []string{} } res := []string{} findGenerateParenthesis(n, n, "", &res) return res} /* 回溯跳出条件, 并不需要判断左括号是否用完,因为右括号生成的条件 right > left , 所以右括号用完了就意味着左括号必原创 2020-10-21 14:45:51 · 292 阅读 · 0 评论 -
Golang刷LeetCode 70. 爬楼梯
题目代码实现:func climbStairs(n int) int { if n == 1||n == 2{ return n } var temp = make(map[int]int) temp[0] = 1 temp[1] = 2 for i := 2; i < n; i++ { temp[i] = temp[i-1] + temp[i-2] } return temp[n-1]}解题思路原创 2020-10-15 11:20:54 · 212 阅读 · 0 评论 -
Golang刷LeetCode 338. 比特位计数
题目代码实现:func countBits(num int) []int { arr:=make([]int,num+1) for i:=1;i<=num;i++{ arr[i]=arr[i&(i-1)]+1 } return arr}解题思路: i & (i - 1)可以去掉i最右边的一个1(如果有),因此 i & (i - 1)是比 i 小,而且i & (i - 1)的1的个数已经在前面算过了,所以i的1的个数就是 i & (i原创 2020-10-14 11:14:45 · 232 阅读 · 0 评论 -
Golang刷LeetCode 136. 只出现一次的数字
136. 只出现一次的数字代码实现:func singleNumber(nums []int) int { // 利用的性质是 x^x = 0。 res := 0 for _, v := range nums { res ^= v } return res}解题思路:由于位运算中 x ^ x = 0,如果同一个数出现两次进行运算会变成0,而0 ^ x = x。...原创 2020-10-13 22:09:28 · 101 阅读 · 0 评论 -
Golang刷LeetCode 191. 位1的个数
191. 位1的个数代码实现:func hammingWeight(num uint32) int { temp := 0 for ;num != 0;temp++{ num = num & (num - 1) } return temp}解题思路:利用num & (num - 1)去清二进制数 num 的最后一个 1。计数直到num变为0,清了多少次1。...原创 2020-10-13 21:50:19 · 169 阅读 · 0 评论 -
Golang刷LeetCode 231. 2的幂
231. 2的幂代码实现:func isPowerOfTwo(n int) bool { if n <= 0 { return false } return (n & (n - 1)) == 0}解题思路:2的幂,转换成2进制的话。n一定是1开头后面位数为0,n-1则首位为0其余位为0,所以判断n>0且n & (n - 1)= 0即可。(n & n-1可以把n最低位的1变0,而当n & n-1 = 0时,则说明n只原创 2020-10-13 21:31:37 · 154 阅读 · 0 评论 -
Golang刷LeetCode 832. 翻转图像
832. 翻转图像代码实现:func flipAndInvertImage(A [][]int) [][]int { for i:=0;i < len(A);i++{ // 水平翻转 for j := 0;j < len(A[i])/2;j++ { A[i][j],A[i][len(A[i])-1-j] = A[i][len(A[i])-1-j],A[i][j] } // 反转原创 2020-10-12 15:03:16 · 118 阅读 · 0 评论 -
Golang刷LeetCode 1550. 存在连续三个奇数的数组
1550. 存在连续三个奇数的数组代码实现://写法一:func threeConsecutiveOdds(arr []int) bool { for i := 0;i < len(arr)-2;i++{ if (arr[i]%2 != 0) && (arr[i+1]%2 != 0) && (arr[i+2]%2 != 0){ return true } } return fa原创 2020-10-12 12:22:23 · 145 阅读 · 0 评论 -
Golang刷LeetCode 977. 有序数组的平方
977. 有序数组的平方代码实现:方法一func sortedSquares(A []int) []int { // 暴力解法 for k, v := range A { A[k] = v * v } sort.Ints(A) return A}解题思路:暴力求解,按题意求解。方法二func sortedSquares(A []int) []int { res := make([]int, len(A)) for i, k, j := 0, len(A)-1,原创 2020-10-12 11:01:12 · 190 阅读 · 0 评论 -
Golang刷LeetCode 面试题 17.10. 主要元素
面试题 17.10. 主要元素代码实现:func majorityElement(nums []int) int { maps:=make (map [int]int) for _,v:=range nums { maps[v]++ } for k,v:=range maps{ if float32(v)>float32(len(nums)/2.0){ return k } }原创 2020-10-12 10:45:01 · 158 阅读 · 0 评论 -
Golang刷LeetCode 867. 转置矩阵
867. 转置矩阵代码实现:func transpose(A [][]int) [][]int { // 交换行和列索引 result:=make([][]int,len(A[0])) for i,_:=range result { result[i]=make([]int,len(A)) } for i:=0;i<len(A);i++ { for j:=0;j<len(A[0]);j++ {原创 2020-10-12 10:13:41 · 310 阅读 · 0 评论 -
Golang刷LeetCode 319. 灯泡开关
题目代码实现:func bulbSwitch(n int) int { return int(math.Sqrt(float64(n)))}解题思路:原创 2020-10-06 11:44:39 · 133 阅读 · 0 评论 -
Golang刷LeetCode 877. 石子游戏
题目代码实现:方法一:func stoneGame(piles []int) bool { return true}解题思路:以四堆为例。最开始可以选择第 1 堆或第 4 堆。如果你想要偶数堆,你就拿第 4 堆,这样留给对手的选择只有第 1、3 堆,他不管怎么拿,第 2 堆又会暴露出来,你就可以拿。同理,如果你想拿奇数堆,你就拿第 1 堆,留给对手的只有第 2、4 堆,他不管怎么拿,第 3 堆又给你暴露出来了。也就是说,你可以在第一步就观察好,奇数堆的石头总数多,还是偶数堆的石头原创 2020-10-05 20:14:59 · 149 阅读 · 0 评论 -
Golang刷LeetCode 26.删除排序数组中的重复项
题目https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/代码实现:GO语言func removeDuplicates(nums []int) int { if len(nums)==0{ return 0 } fast,slow:=0,0 for fast<len(nums){ // 如果快指针和慢的不相同让慢指针继续 并将快指针的值给慢指针 快指针继续前进原创 2020-10-04 15:49:31 · 192 阅读 · 0 评论 -
Golang刷LeetCode 27. 移除元素
LeetCode题目代码实现:Go语言func removeElement(nums []int, val int) int {fast,slow:=0,0 for fast<len(nums){ if nums[fast]!=val{ nums[slow]=nums[fast] slow++ } fast++ } return slow}解题思路:快慢指针利用fast原创 2020-10-04 16:08:01 · 156 阅读 · 1 评论 -
Golang刷LeetCode 83. 删除排序链表中的重复元素
LeetCode题目代码实现:GO语言/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func deleteDuplicates(head *ListNode) *ListNode { if head==nil{ return head } slow:=head fast:=h原创 2020-10-04 16:15:18 · 127 阅读 · 0 评论 -
Golang刷LeetCode 283. 移动零
LeetCode题目代码实现:Go语言func moveZeroes(nums []int) { // p为去除0的结果 p:=removeElement(nums,0) // 将后面的值补0 for p < len(nums){ nums[p] = 0 p++ }}//27题代码func removeElement(nums []int, val int) int {fast,slow:=0,0 for原创 2020-10-04 16:36:03 · 132 阅读 · 0 评论 -
Golang刷LeetCode 80. 删除排序数组中的重复项 II
题目func removeDuplicates(nums []int) int { slow, fast := 1, 2 if len(nums) <= 2{ return len(nums) } for fast < len(nums) { if nums[fast] != nums[slow-1] { slow++ nums[slow] = nums[fast] } fast++ } return slow原创 2020-10-05 11:09:05 · 186 阅读 · 0 评论 -
Golang刷LeetCode 141. 环形链表
题目代码实现/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func hasCycle(head *ListNode) bool { fast := head slow := head for slow != nil && fast != nil && fast.Next != ni原创 2020-10-05 12:00:30 · 168 阅读 · 0 评论 -
Golang刷LeetCode 142. 环形链表 II
题目代码实现:/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func detectCycle(head *ListNode) *ListNode { fast, slow := head, head for { if fast == nil || fast.Next == nil {原创 2020-10-05 17:34:50 · 135 阅读 · 0 评论 -
Golang刷LeetCode 292. Nim 游戏
题目代码实现:func canWinNim(n int) bool { return n%4!=0}解题思路:假设我能赢。当我取完必须剩下1-3颗石子。原创 2020-10-05 19:37:09 · 124 阅读 · 0 评论