文章 32
评论 269
浏览 46263
日刷leetcode--简单版(六)

日刷leetcode--简单版(六)

返回总目录 日刷leetcode–简单版 167. 两数之和 II - 输入有序数组 题目描述 解题思路 定义双指针,分别在头部与尾部 判断两个的和是否与targent相等,相等级返回,比 sum 大则尾指针前移,反之头指针后移 示例代码 func twoSum(numbers []int, target int) []int { l, r := 0, len(numbers)-1 for l < r { sum := numbers[l] + numbers[r] if sum == target { return []int{l + 1, r + 1} } if sum < target { l++ } else { r-- } } return []int{-1, -1} } 运行结果 执行用时 :4 ms, 在所有 golang 提交中击败了 97.30% 的用户 内存消耗 :3 MB, 在所有 golang 提交中击败了 68.38% 的用户

GO实现一个单链表

GO实现一个单链表

不多 BB,直接上代码,有关链表定义,请自行百度 package main import "fmt" type ListNode struct { Val interface{} Next *ListNode } // 初始化 func New() *ListNode { return &ListNode{nil, nil} } // 遍历输出 func (head *ListNode) Traverse() { point := head fmt.Println("--------start----------") for nil != point { fmt.Println(point.Val) point = point.Next } fmt.Println("--------end----------") } // 插入 func (head *ListNode) Insert(val int) { p := head for p.Next != nil { p = p.Next // 位移至尾节点 } s := &ListNode{Val: val} p.N....

Go面试总结

Go面试总结

面试是一个互相博弈的过程,此贴用于记录个人在面试中遇到的各种问题以及解答(不定期更新中) 面试是一个运气问题,你总会遇到一个面试官,问你的问题你都会,当然你会的越多,这个概率就越高

日刷leetcode--简单版(五)

日刷leetcode--简单版(五)

返回总目录 日刷leetcode–简单版 119. 杨辉三角 II 题目描述 解题思路 此题与 118 类似,直接冲 118 中返回最后一个数组即可,但是要优化到 O(k)就显得不是那么容易了 公式: 简单的来说就是前面的数乘以一个分数,这个分数从左到右分别为 n/1, (n-1)/2, ..., 2/(n-1), 1/n,比如第 3 行就是分别乘以 3/1,2/2,1/3 这里要注意的是[1]是第 0 行,而非第一行 示例代码 func getRow(rowIndex int) []int { arr := make([]int,rowIndex+1) if rowIndex == 0{ return arr } arr[0] = 1 for i:= 1; i <= rowIndex; i++ { arr[i] = arr[i-1] * (rowIndex-i+1)/i } return arr } 运行结果 执行用时 :0 ms, 在所有 Go 提交中击败了 100.00% 的用户 内存消耗 :2 MB, 在所有 Go 提交中击败了 90.24% 的用户 121....

日刷leetcode--简单版(四)

日刷leetcode--简单版(四)

返回总目录 日刷leetcode–简单版 88. 合并两个有序数组 题目描述 解题思路 采用双指针,从前往后,如果 nums2 中当前值小于 nums1 中的值,这插入并后移 示例代码 func merge(nums1 []int, m int, nums2 []int, n int) []int { if n == 0 { return nums1 } i, j := 0, 0 for ; i < len(nums1) && j < n; i++ { if nums1[i] > nums2[j] { reverses(nums1[i:]) nums1[i] = nums2[j] j++ } else { continue } } for j < n { nums1[m+j] = nums2[j] j++ } return nums1 } func reverses(nums []int) { for i := len(nums) - 1; i > 0; i-- { nums[i] = nums[i-1] } } 运行结果 执行....

日刷leetcode--简单版(三)

日刷leetcode--简单版(三)

返回总目录 日刷leetcode–简单版 58. 最后一个单词的长度 题目描述 解题思路 定义一个变量统计,从前往后遍历,遇到空格归零就可以了,注意处理最后几个个字符全为空格的情况 定义一个变量统计,从后往前便利,虽然时间复杂度同为 O(n),但是第二个明显快很多 示例代码 func lengthOfLastWord(s string) int { var count int for i:= len(s)-1; i >= 0; i-- { if s[i] == 32{ if count == 0 { continue }else{ break } } count ++ } return count } 运行结果 执行用时 :0 ms, 在所有 Go 提交中击败了 100.00% 的用户 内存消耗 :2.2 MB, 在所有 Go 提交中击败了 39.13% 的用户 66.加一 题目描述 解题思路 从后面往前面循环,最后以一位加 1 即可,处理好末尾9与999 func plusOne(digits []int) []int { c := 1 // 定义一个变量用....

日刷leetcode--简单版(二)

日刷leetcode--简单版(二)

返回总目录 日刷leetcode–简单版 26. 删除排序数组中的重复项 题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。 你不需要考虑数组中超出新长度后面的元素。 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下: // nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = removeDuplicates(nums); // ....

日刷leetcode--简单版系列(目录篇)

日刷leetcode--简单版系列(目录篇)

前言 谨以此贴记录我刷题的过程,那么我为啥要刷题呢 熟悉各互联网公司的算法题目,为找工作做准备。 复习以前学过的编程语言,LeetCode 支持几乎所有主流编程语言,大家可以用不同语言来做题。 熟悉常见的算法和数据结构,LeetCode 提供了交流平台,一些大神会将自己的解法贴出来共享,有些巧妙的解法实在令人叫绝,虽然几乎都是英文,但上面的国人也特别多(中文拼音名字 >_<)。 学习别人的编程思维,加快编程的速度,避免常见的 BUG。 以上内容摘抄自网络,纯属瞎说,真是的原因是: 因为上班工作做完后,不敢明目张胆的摸鱼 下班无聊不想打游戏 算法真的很弱 ...... 时过境迁,上次打开 leetcode 的时候还没有中文版,而现在已经有了--力扣。 由于篇幅的问题,我觉得 5 题一篇,话不多说。 目录: 日刷leetcode--简单版系列(一) 日刷leetcode--简单版系列(二) 日刷leetcode--简单版系列(三) 日刷leetcode--简单版系列(四) 日刷leetcode--简单版系列(五) 日刷leetcode--简单版系列(六)

go 语言圣经练习解答 -- 第四章 (关闭)

go 语言圣经练习解答 -- 第四章 (关闭)

go语言圣经(The Go Programming Language)练习题答案 前言 go语言圣经是一本go入门非常不错的书籍,翻译至The Go Programming Language,本文记录该书章节后练习题答案

日刷leetcode--简单版(一)

日刷leetcode--简单版(一)

返回总目录 日刷leetcode--简单版 1.两数之后 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 解题思路 1 暴力法,双循环相加结果等于 target 就返回 示例代码 func twoSum(nums []int, target int) []int { for i := 0; i < len(nums); i++ { for j := i + 1; j < len(nums); j++ { if nums[i] + nums[j] ==target { return []int{i,j} } } } return nil } 运行结果 执行用时 :56 ms, 在所有 Go 提交中击败了 32.33% 的用户 内存....

【go 语言圣经】练习答案 -- 目录篇 (关闭)

【go 语言圣经】练习答案 -- 目录篇 (关闭)

1.Go语言有时候被描述为“C类似语言”,或者是“21世纪的C语言”。 2.Go语言中和并发编程相关的特性是全新的也是有效的,同时对数据抽象和面向对象编程的支持也很灵活。Go语言同时还集成了自动垃圾收集技术用于更好地管理内存。 3.Go语言尤其适合编写网络服务相关基础设施,同时也适合开发一些工具软件和系统软件。 4.Go语言有足够的类型系统以避免动态语言中那些粗心的类型错误,但是,Go语言的类型系统相比传统的强类型语言又要简洁很多 5.现代计算机是一个并行的机器,Go语言提供了基于CSP的并发特性支持。Go语言的动态栈使得轻量级线程goroutine的初始栈可以很小,顺序通信进程(CSP),在CSP中,程序是一组中间没有共享状态的平行运行的处理过程,它们之间使用管道进行通信和控制同步 6.Go语言的标准库(通常被称为语言自带的电池),提供了清晰的构建模块和公共接口,包含I/O操作、文本处理、图像、密码学、网络和分布式应用程序等,并支持许多标准化的文件格式和编解码协议 7.书中所有的代码都可以从 http://gopl.io 上的Git仓库下载。go get命令根据每个例子的导入路径智能....

go 语言圣经练习解答 -- 第三章

go 语言圣经练习解答 -- 第三章

go语言圣经(The Go Programming Language)练习题答案 前言 go语言圣经是一本go入门非常不错的书籍,翻译至The Go Programming Language,本文记录该书章节后练习题答案 * 中文pdf获取地址1 中文pdf获取地址2 * 英文原版获取地址 * 中文实体书获取地址 (一个还不赖的盗版书网站) * 本文从第三章练习3.10开始,前面的请查看移步我的CSDN 练习 3.10: 编写一个非递归版本的comma函数,使用bytes.Buffer代替字符串链接操作。 参考书中的comma函数,即实现基本的为数字添加逗号分隔符 确定了第一个逗号位置后,每隔三个数字添加一个逗号,最后末尾会多出来一个逗号,去掉即可 使用bytes.Buffe而非"+" func comma(s string) string { var buffer bytes.Buffer l := len(s) for i := 0; i < len(s); i++ { buffer.WriteString(string(s[i])) // 取余3可以得到第一个插入逗号的......

凡打不倒我的,必使我强大!!!—— 墨殇的技术博客