0%

2018年 ARTS 周周享 (30)

Algorithm


只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]
输出: 1

千辛万苦完成的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
func singleNumber(nums []int) int {
lens := len(nums)
res := 0
resIsOk:
for i := 0; i < lens ; i ++ {
if i == lens-1 {
res = nums[i]
break resIsOk
}
for j := i + 1; j < lens; j ++ {
if nums[i] == nums[j] && i != j{
nums[i+1], nums[j] = nums[j], nums[i+1]
i++
break;
}
if j == lens-1 && nums[i] != nums[j] {
res = nums[i]
break resIsOk
}
}
}
return res
}

个人感觉算法蛮好的了

这个可以有

按位异或赋值运算

位操作一直算是本人的弱项, 学习了新的操作方法

1
2
3
4
5
6
7
8

func singleNumber(nums []int) int {
res := 0
for _, n := range nums {
res = res ^ n
}
return res
}

Review

本周在 golang 的一个中文社区进行 Iris 框架文档翻译。 传送门

希望不要误人子弟。本人很多也是多次斟酌,并且还参考了在线翻译, 以及维基百科。尽量做到好理解,不出错。(原谅本人英文水平确实有限)

Tip

在学习 golang 的途中不知死活

New 和 Make

make

The make built-in function allocates and initializes an object of type slice, map, or chan (only). Like new, the first argument is a type, not a value. Unlike new, make’s return type is the same as the type of its argument, not a pointer to it.

new

The new built-in function allocates memory. The first argument is a type, not a value, and the value returned is a pointer to a newly allocated zero value of that type.

对比官方文档, 我们不难看出它们都是内置函数, 并且 new 返回的是指针, 而 make 返回的该类型.

比较重要的是, make 仅仅适用于 slice, mapchan

而是 new 并不常用, 我们通常都是采用短语句声明以及结构体的字面量达到我们的目的

1
user := users()

Share

本周,让我们谈谈关于学习方面的事。

最近一直在学习,并且不断的搜集不同的学习资料。这种行为真的就像松鼠一样,囤积了好多的书以及网盘资料,但是根本就没有时间去看去学习。

一天会抽出大量的时间用来学习,但是发现效果确实是不咋地。为什么会出现这样的情况呢,我仔细的想了想。

  • 学习的目的是什么?
  • 学习的效率如何呢?
  • 学完后,你还记得什么?
  • 是否真的能在实践中应用到?

答案差强人意,就拿人工智能来说吧,这个确实很火,而且薪资应该也算不低了。我花费时间来学习,是否真的明白自己在做什么,好像并不知道,就因为人工智能火吗?那火的东西多了,为啥偏偏学他呢?那学习后的,我还记得什么,oh,shit。我竟然连昨天做的什么都忘了。

说到这儿,我就不继续往下探究了。看来我是真的为了学习而学习了,不明白到底为了什么学习。好吧,接下来,我就该为自己制定详细的目标和计划。从第一步做起,我到底是为了什么?你真的明白吗?