algorithm
Grayan
尽情地享受好时光吧,我们不会再在如此年轻的时候相遇了。
展开
-
golang_算法:字符串反转且转换大小写
package main import "fmt" func reverse(str string) string { if len(str) <= 1 { return str } sli := make([]byte, 0) for _, v := range str { sli = append(sli, byte(v)) } for i := 0; i &l...原创 2020-03-27 16:35:44 · 676 阅读 · 0 评论 -
golang_算法:单链表的反转
type Node struct { Next *Node Value interface{} } //反转单链表 //pre cur cur.Next //nil->1->2->3 //1->nil,2->3 //2->1->nil,3 //3->2->1->nil func ReverseList(head *Node) *N...原创 2019-04-27 20:26:59 · 1577 阅读 · 0 评论 -
算法: 去除大数据文件的重复行
去除大数据文件的重复行 解决思路: 求出每行数据的hash,存入map的key中;每得到一行数据的hash,利用map判断该key是否有值;有则过滤,无则添加到map中。 ...原创 2019-04-18 15:37:16 · 1173 阅读 · 0 评论 -
golang_算法:快速排序算法
package main import "fmt" //快速排序的基本思想: //通过一趟排序将数据分割成独立的两部分, //其中一部分的所有数据都比另外一部分的所有数据都要小, //然后再按照此方法对这两部分数据分别进行快速排序, //整个过程可以递归进行,知道整个数据变成有序序列。 func quickSort(arr []int, start, end int) { if start ...原创 2019-04-11 22:41:08 · 260 阅读 · 0 评论 -
golang_算法:leetcode_动态规划02-买卖股票的最佳时机
package main import ( "fmt" "math" ) //一次遍历 func maxProfit(prices []int) int { minNum := math.MaxInt32 maxPro := 0 for _, value := range prices { if value < minNum { minNum = value } ...原创 2019-04-03 21:32:44 · 578 阅读 · 0 评论 -
golang_算法: leetcode_动态规划01-爬楼梯
package main import "fmt" //设计算法: /* n: f(n) f(1) = 1 f(2) = 2 (1+1, 2) f(3) = 3 (1+1+1, 1+2, 2+1) ... // 爬到第n层, 可以先走一层,再走剩下的n-1层; 或者先走2层,再走剩下的n-2层, 一共两种方法 // 所以可以得到递归方程:其...原创 2019-03-25 18:24:46 · 517 阅读 · 0 评论 -
golang_算法: leetcode_排序与搜索01-合并两个有序数组
package main import ( "fmt" ) func merge(nums1 []int, m int, nums2 []int, n int) { fmt.Println("nums1 =",nums1) fmt.Println("nums2 =",nums2) if m == 0 { copy(nums1,nums2) } if n == 0 { re...原创 2019-03-25 15:07:45 · 220 阅读 · 0 评论 -
golang_算法: leetcode_数组07-加一
package main import "fmt" //设计算法: //99->1,0,0 999->1,0,0,0 //从后往前遍历数组,如果末尾的数字为9,赋值为0,负责++ //如果首端的数字为0,插入[]int{1}至最前端 func plusOne(digits []int) []int { n := len(digits) for i := n - 1; i ...原创 2019-03-01 22:13:31 · 168 阅读 · 0 评论 -
golang_算法: leetcode_数组05-只出现一次的数字
//设计算法: //1. //1) 设置map[int]bool,默认的bool是false //注意有2种键值对,要分清: //nums是数组,遍历中的键值对结构是0-值1,1-值2... //m是一个map,对应的是值1-true,值2-false... //2)进行判断所有值的全改成true,如果再遇到相同的v时,会执行m[v]==true的语句,m[v]会变为false func s...原创 2019-02-25 21:11:00 · 425 阅读 · 0 评论 -
golang_算法: leetcode_数组04-存在重复
import "fmt" //1. func containsDuplicate1(nums []int) bool { for i := 0; i < len(nums); i++ { for j := i + 1; j < len(nums); j++ { if nums[i] == nums[j] { return true } } } ret...原创 2019-02-24 21:03:43 · 804 阅读 · 0 评论 -
golang_算法: leetcode_数组03-旋转数组
import "fmt" //空间复杂度为 O(1) ,不能使用其它数组 ////设计算法: ////1.新建空间,将后k位数截取,后k位和前面的数字分别添加到新空间 //func rotate1(nums []int, k int) { // var arr []int // l := len(nums) // arr = append(nums[(l-k):], nums[:l-k]...)...原创 2019-02-24 21:01:47 · 339 阅读 · 0 评论 -
golang算法_冒泡排序算法
冒泡排序算法 1.分析问题: 挨着的2个元素进行比较,最大的移动到了最后. 2.设计算法: 1)设置数组, 2)第一次排序:索引0至len(数组)-1左右元素进行比较,最大的数排在最后 第二次排序:索引0至len(数组)-2左右元素进行比较,最大的2个数从小到大排在最后 第n次排序: 索引0至len(数组)-n左右元素进行比较,最大的n个数从小到大排在最后 3.编写程序: func main(){...原创 2019-02-18 23:10:31 · 136 阅读 · 0 评论 -
golang_算法: 选择排序算法
选择排序算法 1.分析问题: 拿第n个数字和n+1及后面所有的数依次比较,小的移动到前面 2.设计算法: 1)第一次排序,下标为0的数字和1及后面所有的数依次比较,小的交换到前面 2)第二次排序,下标为1的数字和2及后面所有的数依次比较,小的交换到前面 ... 3)第n次排序,下标为n的数字和n+1及后面所有的数依次比较,小的交换到前面 3.编写程序 func main() { arr:=...原创 2019-02-21 16:24:31 · 193 阅读 · 0 评论 -
golang_算法: 插入排序算法
插入排序算法-insertSort 分析问题 从数组第二位数字开始和前面的数字分别比较,如果前面的数字较大,则前面的数字后移 设计算法 确定arr[i]位置的元素 将它与之前的元素arr[i-1]进行比较 如果它之前的元素arr[i-1]较大,则将该位置的元素arr[i]赋值为它之前的元素,即arr[i]=arr[i-1] 再将i-1,重复2和3的动作,直至i-1>=0 如果arr...原创 2019-02-23 16:30:00 · 122 阅读 · 0 评论