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

golang 正则表达式

package main import "bytes" import "fmt" import "regexp" func main() { //这个测试一个字符串是否符合一个表达式。 match, _ := regexp.MatchString("p([a-z]+)ch", "peach") fmt.Println(match) //上面我们是直接使用字符串,但是对于一些其他的正则任务,你需要使用 Compile 一个优化的 Regexp 结构体。 r, _ := regexp.Compile("p([a-z]+)ch") //这个结构体有很多方法。这里是类似我们前面看到的一个匹配测试。 fmt.Println(r.MatchString("peach")) //这是查找匹配字符串的。 f...阅读全文

博文 2015-04-21 03:00:01 benlightning

golang之数组,slice,map

一 、==========================array 数组=================================== 索引只能是 int 整数型 所以不管几维数组 索引都是 整数 slice 是动态数组 索引也是 整数型 map为key 所以 可以为 整数 也可以为 字符串型 注意slice和数组在声明时的区别:声明数组时,方括号内写明了数组的长度或使用...自动计算长度,而声明slice时,方括号内没有任何字符。 arr1 := [10]int{1,2,3,4} //数组,长度为10,只有4个元素指定,其它的元素值默认为0 arr2 := [...]string{"a","b","c"} //数组,长度自适应,这里长度为3 s1 := []int{1,2,3,4...阅读全文

go语言十大排序算法总结(下篇)

希尔排序 希尔排序基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2《d1重复上述的分组和排序,直至所取的增量dt=1(dt《dt-l《…《d2《d1),即所有记录放在同一组中进行直接插入排序为止。 该方法实质上是一种分组插入方法。 个人总结: public class ShellSorter { public void Sort(int[] arr) { int inc; for (inc = 1; inc <= arr.Length / 9; inc = 3 * inc + 1) ; for (; inc > 0; inc /= 3) { for (int i = ...阅读全文

博文 2016-07-17 19:00:04 guoer9973

Go中的素数筛选

~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ Examination Problem 质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。 判断101-200之间有多少个素数,并输出所有素数。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Analysis 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 在一般领域,对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。 质数大于等于2不能被它本身和1以外的数整除 ~~~~...阅读全文

博文 2016-09-11 15:00:00 u013346007

Go语言正则表达式

package main import "bytes" import "fmt" import "regexp" func main() { //这个测试一个字符串是否符合一个表达式。 match, _ := regexp.MatchString("p([a-z]+)ch", "peach") fmt.Println(match) //上面我们是直接使用字符串,但是对于一些其他的正则任务,你需要使用 Compile 一个优化的 Regexp 结构体。 r, _ := regexp.Compile("p([a-z]+)ch") //这个结构体有很多方法。这里是类似我们前面看到的一个匹配测试。 fmt.Println(r.MatchString("peach")) //这是查找匹配字符串的。 f...阅读全文

博文 2016-04-30 05:00:02 Jesounao

golang之正则校验

Go语言中使用正则校验需要用到 regexp 包 先介绍几种常用的方法: 1、 使用MatchString函数 regexp.MatchString(pattern string, s string) pattern为正则表达式,s为需要校验的字符传 例: match,_:=regexp.MatchString("p([a-z]+)ch","peddach") 返回的第一个参数是bool类型即匹配结果,第二个参数是error类型 fmt.Println(match) //结果为true 2、使用 Compile函数或MustCompile函数 它们的区别是Compile返回两个参数*Regexp,error类型,而MustCompile只返回*Regexp类型 func Compile(ex...阅读全文

博文 2016-11-22 01:00:02 skh2015java

【面试题】计算某个整数 1 的位数,即 Hamming weight

编写一个函数,接收一个无符号整数,返回它拥有的“1”位数(也称为汉明权重,[Hamming weight](https://en.wikipedia.org/wiki/Hamming_weight))。 例如,32 位整数 '11' 的二进制表示为 `00000000000000000000000000001011`,所以函数应该返回3。 ```go // hammingWeight 计算 Hamming weight func hammingWeight(n uint32) int { } ``...阅读全文

go语言函数例题

// proctice3.2 project main.go main import ( "fmt" ) func main() { //Q10. (5) 变参 1. 编写函数接受整数类型变参,并且每行打印一个数字 printthem printthem fmtPrintln /*Q11. (5) 斐波那契1. 斐波那契数列以:1; 1; 2; 3; 5; 8; 13; : : : 开始。或者用数学形式表达:x1 =1; x2 = 1; xn = x...阅读全文

博文 2015-08-13 14:00:01 直冲

go语言 类型:数组

在go语言中数组array是一组特定长度的有序的元素集合。 go的数组类型由两部分组成——类型和长度,二者缺一不可。数组本来就是一块存储相同类型元素的连续内存空间,因此决定一个数组的类型,必然需要决定其存储元素的类型以及存储多少个元素。 在Go语言中,数组长度在定义后就不可更改。 数组是值类型,每次传递都将产生一份副本。 例子: package main import ( "fmt" "strconv" ) func main() { var a [5]int //定义数组 5个整数型 fmt.Println("emp:", a) //整数型零值为0 a[4] = 100 //修改数组 fmt.Println("set:", a) fmt.Println("get:", a[4]) //输出...阅读全文

博文 2015-10-13 03:00:00 osfipin

GoLang练习实例100之003----完全平方数

package main import ( "fmt" ) //题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少 func main() { for i :=1; i<=85; i++{ if 168 % i==0{ j := 168 / i if (i>j) && ((i + j) % 2==0) && ((i - j) % 2 == 0){ //m := (i + j) / 2 n := (i - j) / 2 x := n * n - 100 fmt.Printf("符合条件的整数有:%s\n",x) } } } ...阅读全文

博文 2018-03-20 22:33:04 不折腾难受斯基

通过leetcode学习位运算及其Go实现

问题描述 461. Hamming Distance即求两个正整数的二进制对应位数不同的个数 原理说明 从问题描述来看,最直观的解决方法就是十进制数先转成二进制,再比对相同位数是否相同,不同则计数器累加,最终计数器的值即是Hamming Distance。 优化方案:先^运算,对运算结果的位数进行遍历,1则计数器累计 基于这个思想,需要用到的有 异或运算 和 位运算。 异或^ 和 异或非 异或运算法则:相同为零,不同为一。异或非运算法则:相同为一,不同为零。即: 输入A: 1 0 1 0 输入B: 1 1 0 0 异或运算结果: 0 1 1 0 异或非(同或)运算结果:1 0 0 1 左移<< 和 右移>> 左移 右边空出的位用0填补 高位左移溢出则舍弃该高位 右移 左边空出的位用0或者1填...阅读全文

博文 2017-10-29 06:04:40 酒肉穿肠过

POJ 1047 Round and Round We Go 循环数新解

题目描述: 给定一字符串表示的高精度数,判断它是否是可循环的。如果假设字符串num的长为n,则将num从1开始乘到n,如果每次得到的结果包含的字符元素都和a是相同的,则它是可循环的。 解题思路: 初看这一题,想到的解法是利用高精度数的乘,计算出num乘以1到n的结果,再与num进行对比。这种方法较为简单,可以得到正确的结果,但是效率并不是很理想。对于循环数,我们最常见到的是循环小数,而这一题的解法也是由此引申得出的。 初等数论里面有以下三个定理: 欧拉定理:设a、m为整数,m>1,(a,m)=1,则a^φ(m)≡1 (mod m)。 整数的次数:a、m为整数,m>1,(a,m)=1,k是使a^k≡1 (mod m)成立的最小正整数,则k叫做a对模m的次数。 次数定理:设a对模m的次数为k,n...阅读全文

博文 2016-02-05 07:00:01 furney

Go语言编程-语法

Go注释 //单行注释 /* */多行注释 Go的内置关键字 default select defer go goto fallthrough range package(包) import(导包) return (返回) var(声明全局变量) type(一般类型声明) struct(结构) interface(接口) func(方法) map(map类型) switch case if else for continue break const(定义常量) chan(通道,用于多个服务器之间的通道,用于并发) Go基本类型 bool:布尔型 1字节,取值:true,false, 不可以用数字代表 int/uint:整型 根据运行平台可能是32或64bit int8/uint8:8位整型 ...阅读全文

博文 2016-02-15 05:00:00 u013355724

GO函数调用出问题了!!求大神帮忙

function.go文件内容: package main import ( "errors" ) func Add(a int, b int) (sum int, err error){ if a<0 || b<0 { err = errors.New("请输入正整数") return } return a+b, nil } functionTest.go文件内容: package main import ( "fmt" ) func main() { a, err := Add(-2,3) fmt.Println(a,err) } 报错: # command-line-arguments co...阅读全文

Go 语言常量

Go 语言常量常量是一个简单值的标识符,在程序运行时,不会被修改的量。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。常量的定义格式:const identifier [type] = value你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。显式类型定义: const b string = "abc"隐式类型定义: const b = "abc"多个相同类型的声明可以简写为:const c_name1, c_name2 = value1, value2以下实例演示了常量的应用:package main import "fmt" func main() { const LENGTH int = 10 const WIDTH int = 5...阅读全文

博文 2016-02-25 11:00:02 u011225629

Go中的素数筛选

~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ Examination Problem 质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。 判断101-200之间有多少个素数,并输出所有素数。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Analysis 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 在一般领域,对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。 质数大于等于2不能被它本身和1以外的数整除 ~~~~...阅读全文

博文 2016-09-03 03:00:01 u013346007

golang strings包

package main import ( "fmt" "strings" ) func main(){ var sayHi string = "Hello" //定义字符串并赋值 fmt.Println(sayHi + "World") //字符串拼接 fmt.Println(len(sayHi)) //len显示字符串长度 fmt.Println(sayHi[0]) //显示第一个字符的asic码 fmt.Println(string(sayHi[0])) //要正常显示第一个字符,转成string类型 var pi float64 = 3.14 //定义一个浮点类型 fmt.Println("%T:%d\n",int(pi),int(pi)) //string可直接将浮点转成整数 //...阅读全文

博文 2017-02-10 11:03:56 欺世

Golang 优化之路——bitset

写在前面 开发过程中会经常处理集合这种数据结构,简单点的处理方法都是使用内置的map实现。但是如果要应对大量数据,例如,存放大量电话号码,使用map占用内存大的问题就会凸显出来。内存占用高又会带来一些列的问题,这里就不展开说了。还有就是,大量数据存放于map,查找的哈希算法消耗也会很高。这时就该考虑对数据结构进行优化。之前浏览awesome-go时发现了一种叫bitset的数据结构,今天就介绍一下它。 bitset 简介 首先这是一个数据结构。从名字set不难发现,这是一个集合的数据结构。bit的含义也比较好懂,通过set是通过bit实现的。如果你需要一个集合,正好集合内的元素都是正整数,那么用这个就没错了。 注:biset 有时也会被叫做 Bitmap。 Example import "g...阅读全文

golang99道练习题之14

**1.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。** **2.程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:** (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 **3.程序源代码:** ```go package main import "fmt" func main() { var i, n int fmt.Print("n=") fmt.Scan(&n) fmt.Printf("%d=", n) for i = 2; i < n;...阅读全文

博文 2018-11-21 09:54:07 hdking

golang中整数的阶乘

package main import "fmt" var facVal uint64 = 1 var i int = 1 var n int /* function declaration */ func factorial(n int) uint64 { if n < 0 { fmt.Print("Factorial of negative number doesn't exist.") } else { for i := 1; i <= n ; i++ { facVal *= uint64(i) } } return facVal } func main() { fmt.Println("Enter a positive integer between 0 - 50 : ") fmt....阅读全文

博文 2019-03-05 21:35:50 PowerMichael

go语言基本语法——常量constant

一、常量的使用1.1 常量声明常量是一个简单值的标识符,在程序运行时,不会被修改的量。const identifier [type] = value 显式类型定义: const b string = "abc" 隐式类型定义: const b = "abc" package main ​ import "fmt" ​ func main() { const LENGTH int = 10 const WIDTH int = 5 var area int const a, b, c = 1, false, "str" //多重赋值 ​ area = LENGTH * WIDTH fmt.Printf("面积为 : %d", area) println() println(a, b, c) }运...阅读全文

Golang 优化之路——Cantor pair

写在前面 某一种对象是通过两个ID唯一确定的,如何处理这种数据结构以便快速查找以及节约内存?先说一种笨方法——用字符串来处理。这是比较容易想到的(我觉得一般最容易想到的也是最简单粗暴的方法都是用字符串来搞搞搞)。 fmt.Sprintf("%d_%d", id1, id2) 这样就成了。存储的时候用字符串来保存,查询比较的时候用字符串的方法来计算。当然,把数字当作字符串来保存和计算本身就是极其浪费内存和CPU的。 Cantor pairing function 简介 康托尔配对 - Cantor pairing function,是一种将两个自然数转成唯一一个自然数的方法。具体原理我就不说了,我也看不懂。。。简单地说: 只支持自然数。自然数是整数(自然数包括正整数和零); 支持反解; f(k...阅读全文

(Golang实现)打印1,2,3,4能组成的所有整数

package main import ( "fmt" "strconv" ) func getnums() []int { ret := make([]int, 0) for i := 1; i <= 4; i++ { for j := 1; j <= 4; j++ { for k := 1; k <= 4; k++ { if i != j && j != k && i != k { ele := fmt.Sprintf("%d%d%d", i, j, k) intEle, _ := strconv.Atoi(ele) ret = append(ret, intEle) } } } } return ret } func main() { fmt.Println(getnums()) } ...阅读全文

博文 2019-06-06 21:32:40 FredricZhu

C语言面试题-这些简单的你能很快的写出来吗?

C语言面试题-这些简单的你能很快的写出来吗?在职场上,面试已经成了我们经常讨论的一个话题,但是当我们在求职面试的时候总是会遇到各种问题,在这里我就给大家讲解一些C语言的面试题!​面试题一: 编写一个函数将一个字符串倒置,即将“abc”变为“cba”。分析: 这样的问题显然涉及到char型指针的运算。Exp: void InvertStr(char *str) { long int i=0; //估计这么长的字符串应该够用了,如果实在不行只能用float的数据来试验了。 char *head; char *chTemp; if(NULL == str) { return ; } head=str; chTemp=str; while('\0' != *str) { str++; i=i+1; ...阅读全文

博文 2019-01-17 16:34:10 gaohuan123

Golang 优化之路——bitset

写在前面 开发过程中会经常处理集合这种数据结构,简单点的处理方法都是使用内置的map实现。但是如果要应对大量数据,使用map占用内存大的问题就会凸显出来。内存占用高又会带来一些列的问题,这里就不展开说了。还有就是,大量数据存放于map,查找的哈希算法消耗也会很高。这时就该考虑对数据结构进行优化。之前浏览awesome-go时发现了一种叫bitset的数据结构,今天就介绍一下它。 bitset 简介 首先这是一个数据结构。从名字set不难发现,这是一个集合的数据结构。bit的含义也比较好懂,通过set是通过bit实现的。如果你需要一个集合,正好集合内的元素都是正整数,那么用这个就没错了。 Example import "github.com/willf/bitset" var b bitset...阅读全文

go语言中正则模块的使用详解

GO语言中正则模块的使用详解 前景摘要: * 在go语言中正则的包是regexp * 在使用的时候,首先应该导入此包 1. func Compile(expr string) (*Regexp, error){} 用于解析正则表达式并返回(如果成功)可用于匹配文本的Regexp对象。同时会返回一个error str := "adsd123" re, _ := regexp.Compile("[a-b]{1}") res := re.MatchString(str) # 返回值类型为布尔值 fmt.Println(res) 输出: true 2. func CompilePOSIX(expr string) (*Regexp, error){} 用于解析正则表达式并返回(如果成功)可用于匹配文...阅读全文

博文 2019-05-31 13:35:14 qq5c9c828bc8d4b

Functional Go: Transient 及持久化

在之前的文章中,我们介绍了一些持久化数据结构实现的基本原理和 Vector Trie 这一数据结构在 Golang 下的实现过程。 这篇文章终于来到了实现持久化 List 的最后一步: 实现 Transient 和持久化的功能。 这篇文章是系列文章的一部分,如果还没有浏览过文章的其它部分请参考: 持久化数据结构简介 Vector Trie 的实现 Transient 及持久化 (本文) 在之前的文章中,我们已经看到了如何实现一个 Vector Trie,也知道如何使用 Vector Trie 来实现共享数据结构的持久化 List: 在每次修改时,我们复制从根节点到被修改节点路径上的所有节点,并使用得到的新的 Root 节点构造一个新的 List 的 HEAD 数据结构。这样通过新的 HEAD...阅读全文

博文 2017-09-26 22:36:33 meter

golang第一天

环境搭建 win10环境,.msi软件一直下一步,安装结束,path环境变量自动配置 测试环境是否搭建成功,使用go version命令 1.png 测试代码 hello.go, 包含go的基本语法和类型 package main //主包 import ( "fmt" //打印模块 "math" //数据运算模块 ) /** * 常量的声明 * 只能为:布尔型、数字型(整数型、浮点型和复数)和字符串型 */ const ( MY_NAME = "JACK" MY_AGE int = 19 MY_FLAG bool = true ) /** * 程序入口 main函数和main包 */ func main() { /** * 声明一个字符串类型变量 */ var message string...阅读全文

博文 2019-02-26 23:34:44 陌生人的头像

Golang 正则表达式

参考 golang之正则校验 golang正则使用总结 //MatchString返回的第一个参数是bool类型即匹配结果,第二个参数是error类型 sourceStr := `my email is gerrylon@163.com` matched, _ := regexp.MatchString(`[\w-]+@[\w]+(?:\.[\w]+)+`, sourceStr) fmt.Printf("%v", matched) // true r,_:=regexp.Compile("p([a-z]+)ch") b:=r.MatchString("peach") fmt.Println(b) //结果为true //Compile函数或MustCompile函数是将正则表达式进行编译,返...阅读全文

博文 2019-02-22 18:34:43 懒皮

golang基础(2)基础类型

基本类型 在开始之前,先补充一下上一次分享的内容,是不可以重复为变量 foo 初始化赋值的。 foo := 'hello' foo := "world" 我是一名 web 前端出身的 developer,接触最早也是接触最多还是 javascript ,所以学习任何其他新的语言我都喜欢给 javascript 对比地来学。在 javascript 数据类型中对于数值只有 number 类型也就是 float 类型,而在 go 语言却进行相当细致的划分数值类型,应该是为了效率,节省内存空间吧。更准确地为变量分配内存空间。 int8 int16 int32 int64 float32 float64 关于这些数据类型,我就不做过多解释 int 代表整数型,后面 8 代表的占内存大小也是就是这个数...阅读全文

golang的strings,strconv

package main import ( "fmt" "strings" "strconv" ) func main() { var str = ` 床前明月光, 疑是地上霜。 ` fmt.Println(str) var a = "66666" fmt.Println(a) fmt.Println(strings.Fields("abc def ghi")) //替换两边的a(可以是连续多个a) fmt.Println(strings.Trim("aabbaabcbbaa","a")) //替换所有a,b fmt.Println(strings.Trim("abbaabcbba","ab")) //替换左边的ab(可以是连续多个a或b) fmt.Println(strings.TrimL...阅读全文

博文 2019-01-22 13:38:00 梁十八

进制知识

进制 对于整数,有四种表示方式: 1、二进制:0,1 ,满 2 进 1。在 golang 中,不能直接使用二进制来表示一个整数,它沿用了 c 的特点。 2、十进制:0-9 ,满 10 进 1。 3、 八进制:0-7 ,满 8 进 1。 以数字 0 开头表示。 4、 十六进制:0-9及A-F,满16进1.。以0x或0X开头表示。 此处的 A-F不区分大小写...阅读全文

博文 2019-02-11 21:34:43 StevenQin

LeetCode-7-整数反

题目描述 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 思路 中规中矩,逐个取出每一位数,存到一个数组中,最后拼接成新的数,因为在平台上int默认为64位整型,所有比较判断溢出即可 Code Golang func reverse(x int) (res int) { min := math.MinInt32 max := math.MaxInt32 bts := []int{} res = x if x < 0 { res = -res } for i:=1;res > 0;i++ { ys := res % 10 bt...阅读全文

博文 2019-07-12 23:32:42 monigo

leetcode 25. k个一组翻转链表

题目描述 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例: 给定这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3->5 当 k = 3 时,应当返回: 3->2->1->4->5 说明: 你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 解题思路 1. 取链表的前K个节点,如果够K个节点,就截断后进行反转,不够K个节点,说明处理完了,return 2. 反转完前K个节点后,使用递归,处理后面的链表 代码实现 // ListNode Definition for singl...阅读全文

博文 2018-10-27 09:34:38 tomorrowwu

golang math/big 和 string bytes相互转化

显式初始化 num := big.NewInt(math.MaxInt64) math.MaxInt64是最大的整数 num := big.NewInt(1999) fmt.Printf("Big int: %v\n", num) ⚠️显式初始化最大只能是math.MaxInt64,如果还想大,就得需要byte或者string byte array -> big.Int import "math/big" z := new(big.Int) z.SetBytes(byteSliceHere) or func Base64ToInt(s string) (*big.Int, error) { data, err := base64.StdEncoding.DecodeString(s) if ...阅读全文

博文 2019-09-26 14:33:28 aside section ._1OhGeD

GoLang 学习笔记 - 常量

常量   常量是在程序运行时不会被修改也不可修改的量。在GoLang 中,常量的数据类型只可以是布尔型、数值型(整数型、浮点型和复数)和字符串,通常用下划线分隔大写字母来命名常量。   GoLang 中常量的定义格式: const A string = "a" // 显式类型定义 const B = "b" // 隐式类型定义   多个相同类型的声明可以简写为: const NUM_1, NUM_2 = 3, 4   常量还可以用作枚举(枚举篇会讲): const ( Unknown = 0 Female = 1 Male = 2 ) iota   iota,特殊常量,可以认为是一个可以被编译器修改的常量,通常用作常量计数器。   iota iota 每次出现都会初始化为 0,const 中...阅读全文

博文 2019-07-21 05:32:39 凉丶心园

试设计算法得到原数组循环右移 k 次的 结果并分析算法的时间复杂度。

试设计算法得到原数组循环右移 k 次的 结果并分析算法的时间复杂度。 1.问题描述 已知一个长度为 n 的数组和一个正整数 k,并且最多只能使用一个用于 交换数组元素的附加空间单元,试设计算法得到原数组循环右移 k 次的 结果并分析算法的时间复杂度。 2.解决思路 根据三步反转法,实现时间复杂度为O(n),空间复杂度为O(1) 过程: 1、将整体数组进行反转,原顺序1,2,3,4,5,6,7,8,9变为9,8,7,6,5,4,3,2,1 2、将前K-1个数进行反转,比如K=2,则结果为:8,9,7,6,5,4,3,2,1 3、将后K个数进行反转,结果:8,9,1,2,3,4,5,6,7 3.代码实现 golang code: package main import "fmt" func Do...阅读全文

博文 2019-06-25 16:03:44 小橙子Chelsea

float64( 1<<80 ) 为什么是合法的?

1<<80 应该超过了整数的表示范围,事实上我直接写 1<<80 是不会通过的 但是写成 float64(1<<80) 就通过了。 按我的理解,这句的意思是 把 (1<<80) 这个整数转换成 float64 类型。 按理说,这应该是先溢出,然后转型。应该会报错才对。 但实际情况是 float64( 1<<80 ) 的结果是正确的。 为啥...阅读全文