Skip to content

算法 数组下标

Xiaolin Zhang edited this page Nov 17, 2019 · 2 revisions

算法 - 数组下标

循环

for i:=0; i < n; i++{
  // dosomething
}

这段程序代表的意思是 dosomething n 次.

和这个是等同的

for i:=n; i > 0; i--{
  // dosomething
}

倒数第N个

设数组 nums = []int{...}

倒数第一个: nums[len(nums)-1]

倒数第N个: nums[len(nums)-N] (N >=1)

数组长度

  • 单个数据的长度是 size, 最后一个元素是size - 1
  • 将数组的长度总是记做n,m. 下标总是从0开始到n-1,m-1结束

中间值

先想一个问题, 为什么int的除法本质是什么?

右移操作. 要知道右移动的时候丢掉了最后一位的信息, 对于xxx1和xxx0来说右移的结果都是一样的.

于是我们知道,

  1. 0(00) -> 0(00)

  2. 1(01) -> 0(00)

  3. 2(10) -> 1(01)

  4. 3(11) -> 1(01)

所以每一个偶数和比他大一的奇数, 除以2得到的值都是偶数除以2的值, 看例子

3是奇数, 比他小的偶数是2, 2/2=1; 所以3和2除以2都是1

8的上一位是9, 8和9除以2都是4 ...

编程中,因为我们总是用0当做下标, 这个时候一个

  • 偶数x除以2可以整除, 那么中间值必然在左边或者右边. 因为下标从0开始, 所以是从左边开始

    a b M d e f

  • 如果x是一个奇数, 我们说过一个奇数x和x-1除以2是一样的.所以相当于x-1平分了左右之后, 中间那个数就是奇数.

    a b c M d e f

Clone this wiki locally