自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 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 180

原创 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 222

原创 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 146

原创 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 163

原创 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 83

原创 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 141

原创 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 122

原创 算法与数据结构-位运算

为什么使用位运算程序中所有的数在计算机内存中以二进制储存,位运算直接对内存进行操作,处理速度快。常见位运算符异或常见位运算操作复杂的位运算操作LeetCode经典题目:191、231...

2020-10-13 11:15:35 108

原创 Golang基础-指针

什么是指针一个指针变量指向了一个值的内存地址。区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。相对其他语言来说简单很多。简单看下使用方法。指针的声明var ip *int var fp *float32 指针取值func main() { var a int= 20 /* 声明实际变量 */ var ip *int /* 声明指针变量 */ ip = &a /* 指针变量的存储地址 */ fmt.Printf

2020-10-12 16:27:55 133

原创 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 101

原创 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 127

原创 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 163

原创 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 133

原创 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 251

原创 Golang基础-Go Modules的使用

介绍go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。使用 go module 管理依赖后会在项目根目录下生成两个文件go.mod和go.sum。设置设置环境变量export GO111MODULE=on1.13之后使用go env -w GO111MODULE=on设置代理export GOPROXY=https://goproxy.cn Go1.13之后GOPROXY默认值为https:

2020-10-08 19:09:34 344

原创 Golang基础-数据结构-map

定义哈希表:一个无序的key-value对的集合,其中所有的key的值不同,通过给定的key对其进行检索、更新或删除可以在 O(1) 的时间复杂度内完成。map[KeyType]ValueType其中 KeyType表示键的类型 ValueType表示键对应值的类型基本使用初始化make(map[KeyType]ValueType, [cap])其中 cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。ages := make(map[

2020-10-08 11:28:27 261

原创 Golang基础-数据结构-切片(slice)

定义为什么需要切片?保存不确定长度的数据切片是数组的一个引用,是引用类型切片的定义:var 变量名 []类型例如: var a []string //声明一个字符串切片 var b = []int{} //声明一个整型切片并初始化 var c = []bool{false, true} //声明一个布尔切片并初始化 var d = []bool{false, true} //声明一个布尔切片并初始化 fmt.Println(a)

2020-10-06 21:44:56 947

原创 Golang基础-数据结构-数组(array)

数组的定义var 变量名[元素数量(长度)]元素类型例如:var a [5]intvar b [4]int注意:1.数组是多个相同类型数据的组合,一个组合一旦声明或定义,其长度是固定的,不能动态变化2.数组中的元素可以是任何数据类型,包括值类型和引用类型,但是不可以混用3.创建后,如果没有赋值,默认零值4.使用步骤:1.声明数组并开辟空间 2.赋值 3.使用数组的初始化var a [5]int//不给值 默认初始化为int类型的零值var b =[3]int{1,2}//此时数组为

2020-10-06 17:36:22 644

原创 Golang刷LeetCode 319. 灯泡开关

题目代码实现:func bulbSwitch(n int) int { return int(math.Sqrt(float64(n)))}解题思路:

2020-10-06 11:44:39 116

原创 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 126

原创 Golang刷LeetCode 292. Nim 游戏

题目代码实现:func canWinNim(n int) bool { return n%4!=0}解题思路:假设我能赢。当我取完必须剩下1-3颗石子。

2020-10-05 19:37:09 109

原创 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 115

原创 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 150

原创 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 170

原创 Golang基础-流程控制

1.顺序控制package mainimport "fmt"func main() { var days int = 97 var week int = days / 7 var day int = days % 7 fmt.Printf("%d个星期零%d天\n", week, day)}2.分支控制1.单分支控制package mainimport "fmt"//单分支控制func main() { var age int fmt.Println("请输入年龄

2020-10-04 21:24:24 144

原创 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 108

原创 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 111

原创 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 135 1

原创 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 174

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除