Go语言中文网 为您找到相关结果 9

Golang 数组过滤操作benchmark效率对比

说明 之前做的go项目,遇到一个关于数组的增删效率问题: 循环数组--判断--删除数组--得到需要的数组 示例:如果我需要在arr1中过滤掉arr2第一次写的方法如下 arr1:=[]int{1,2,3......,999,1000} arr2:=[]int{5,10,15......,995,1000} for k, v := range arr1{ for _, vv := range arr2{ if v == vv { arr1= append(arr1[:k], arr1[k+1:]...) } } } 这样写会出现错误,因为删除一个数之后,数标就对不上了,因此需要倒序删除: for i := len(arr1) - 1; i >= 0; i-- { v := arr1[i] fo...阅读全文

博文 2017-03-05 19:46:27 cowkeys

protobuf可变长度原理

这篇文章在你已经了解protobuf使用的基础上,更进一步的学习,如果不知道protobuf是什么?请查阅这篇文章【golang-protobuf使用】 可变长度类型 官网说明地址:https://developers.google.com/protocol-buffers/docs/proto3 proto文件的可变长度类型有:int32、int64、uin32、uin64、sint32、sint64 连续位标识 Protobuf用的是连续位标识技术,使用每个字节的第一位来标识是否需要继续向后读。每个字节低7位用于实际的编码。 举例: 本次举例使用uin32类型 十进制:300 二进制(4个字节):00000000 00000000 00000001 1000000 protobuf编码过...阅读全文

博文 2018-12-03 14:34:49 __simple

leetcode刷题记录Array篇(31~Next Permutation)

##31.Next Permutation 题目:Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers. If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order). The replacement must be in-place, do not allocate extra memory. 翻译:实现下一个排列,将数字重新排列成数字的下一...阅读全文

博文 2017-04-24 12:54:19 L千年老妖

LeetCode-9-回文数

题目描述 回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 思路 比较简单,先转成字符串再判断是否为回文即可 Code Golang func isPalindrome(x int) bool { if x < 0 { return false } s := strconv.Itoa(x) bs := []...阅读全文

博文 2019-07-17 00:32:41 monigo

韩顺平 尚硅谷 Array题答案(Golang)

image.png image.png image.png image.png 作业1答案 package main import ( "fmt" "math/rand" "time" ) func reversePrint(arr [10]int) { _len := len(arr) for i := 0; i < _len/2; i++ { arr[i], arr[_len-1-i] = arr[_len-1-i], arr[i] } fmt.Println(arr) } func main() { var arr [10]int // 随机生成10个1-100的整数 rand.Seed(int64(time.Now().Nanosecond())) for i := 0; i < l...阅读全文

博文 2020-04-18 17:32:49 FredricZhu

使用golang的sort包进行排序

这是在掘金的第一篇文章,之前一直在某书发文章,进来感觉某书越来越不好了,想把文章 都搬到掘金来。 介绍 golang和java等语言一样,系统自带了一个排序方法,可以快速实现排序。废话不多说,先上栗子,再解释。 package main import ( "fmt" "math/rand" "sort" "strconv" ) func main() { oneArr := make([]*One, 10) for i := 0; i < 10; i++ { oneArr[i] = &One{ Name: "name" + strconv.FormatInt(int64(i), 10), Num: rand.Intn(1000), } } for _, v := range oneArr {...阅读全文

让我们一起啃算法----回文数

回文数(Palindrome-Number) 这是一个比较简单的题目,题干如下: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1: 输入: 121 输出: true示例 2: 输入: -121 输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3: 输入: 10 输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。来源:力扣 解题思路 按照题目的定义: 负数一定不是回文数,并且 [0,9] 的数一定是回文数。 其次,我们稍微延伸一下题目,如果判断一个字符串是否是回文字符串,我们会怎么做?常规思路就是设置两个指针 i 和 j 分别指向字符串的第一个字符和最后...阅读全文

博文 2020-04-26 10:32:44 三斤和他的朋友们

排序

基于比较的排序算法:冒泡,插入,选择,快排,归并 不基于比较的排序算法:桶,计数,基数 稳定性 待排序的序列中存在值相同的元素,经过排序后相同元素之间原有的先后顺序不变。 冒泡排序 image.png 优化:在每次冒泡操作时可以加入有序标志位,如果一次冒泡操作后没有进行过数据交换,则认为数据集为有序,可以提前退出冒泡排序 冒泡排序是原地排序,只需要常量级别的临时空间作为交换数据使用; 冒泡排序是稳定的排序算法,只要在两个相邻元素比较时,相同大小不进行交换就可以保证; 冒泡排序的时间复杂度:最好情况为有序数据集,仅需要一次冒泡操作,所以最好的时间复杂度为O(n),最坏情况为倒序数据集,时间复杂度为O(n2),平均时间复杂度为O(n2); 插入排序 插入排序是原地排序算法,不需要额外空间; 插入...阅读全文

博文 2019-12-21 06:32:48 元气蛋蛋

翻转单词顺序

题目描述 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。 思路 1.首先将原字符串根据“ ”进行分割,将分割后的数组倒序相加,中间用“ ”分割。 2.最后将最终的字符串尾部多余的“ ”去掉。 Java代码实现 class Solution { public String reverseWords(String s) { String[] words = s.split(" "); String res = ""; for (int i = words.length-1; i >= 0; i--) { if("".equals(words[i]...阅读全文

博文 2020-03-04 10:32:55 youzhihua