博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Golang面试考题记录 ━━ 加一,暂无执行排名
阅读量:4116 次
发布时间:2019-05-25

本文共 1655 字,大约阅读时间需要 5 分钟。

===问:

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]

输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]

输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

===答:

方法一:执行(暂无结果),内存97.32%

func plusOne1(digits []int) []int {
l := len(digits) // 是否需要增加一位 k := 1 for i := l - 1; i >= 0; i-- {
v := digits[i] + 1 if v >= 10 {
// 如果已经循环完毕,则还多出一个1,在后面补齐 digits[i] = v - 10 } else {
digits[i] = v k = 0 break } } // 如果需要增加一位则重组切片 if k == 1 {
digits = append([]int{
1}, digits...) } return digits}

方法二:执行(暂无结果),内存97.32%

和方法一比没什么不同,就是减少几个变量

func plusOne2(digits []int) []int {
// 是否需要增加一位 k := 1 for i := len(digits) - 1; i >= 0; i-- {
digits[i]++ if digits[i] >= 10 {
// 如果已经循环完毕,则还多出一个1,在后面补齐 digits[i] -= 10 } else {
k = 0 break } } // 如果需要增加一位则重组切片 if k == 1 {
digits = append([]int{
1}, digits...) } return digits}

===注:

两种方法里,其中一个用了变量v来存储digital[i]的值进行操作,而另一个是直接用digital[i]进行操作,各有优劣,但是依照前几题的经验,如果在较长的切片中用digital[i]直接进行操作会影响执行效率。但本次测试并未能得到执行效率的排行,所以暂时未知哪种方法更好。

笑:

刚拿到手的时候第一反应是把切片整合成整数,再+1,得到的数切割一下不就行了?
于是~~

func plusOne3(digits []int) []int {
var r []int var s string // 将切片内数字整合为字符串 for _, v := range digits {
s += strconv.Itoa(v) } // 将字符串变为整数 d, err := strconv.Atoi(s) if err != nil {
return r } // 整数+1 d++ // 整数变字符串 s = strconv.Itoa(d) // 字符串变切片 for _, v := range s {
if y, err := strconv.Atoi(string(v)); err == nil {
r = append(r, y) } } // 返回 return r}

展示这种方法只是提供一种思路,其结果是错的,其只能用于整数范围计算,如果给的切片是:

[]int{1,2,3,4,5,6,7,8,9,0,9,8,7,6,5,4,3,2,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9}
很显然超出整数位数了,无法进行计算,结果也必然是[]int{}

转载地址:http://ztkpi.baihongyu.com/

你可能感兴趣的文章
7种方法实现移动端Retina屏幕1px边框效果
查看>>
CSS滚动条实现步骤及美化小技巧
查看>>
【AngularJS教程】快速入门篇之 双向绑定
查看>>
【JavaScript 教程】标准库—Array 对象
查看>>
那些坚持写博客的程序员,后来都怎么样了?
查看>>
这些惊人的“二八”法则,你必须要知道
查看>>
三个值得期待的 JavaScript 新特性!
查看>>
【JavaScript 教程】标准库—包装对象
查看>>
辞退你,培养你,从来都不是看能力!
查看>>
【JavaScript 教程】标准库—Boolean 对象
查看>>
18个你可能不相信的前端炫酷特效,附观赏地址与下载源码
查看>>
自己没本事,认识谁都没用!!!
查看>>
我关注的那些大佬程序员
查看>>
【JavaScript 教程】标准库—Number 对象
查看>>
毕业10年,一个上海女程序员的职业之路—01
查看>>
【JavaScript 教程】标准库—String 对象
查看>>
2019年哪些外快收入可达到2万以上?
查看>>
【JavaScript 教程】标准库—Math 对象
查看>>
因发布JavaScript无限循环代码,13岁女学生被警方调查
查看>>
我用24次离职,换来6条血一样的教训
查看>>