Skip to content

code_corner_case

Xiaolin Zhang edited this page Nov 2, 2019 · 1 revision

编程里的corner case

数组

概念

长度

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

中间值

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

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

于是我们知道,

  1. 00 -> 00
  2. 01 -> 00
  3. 10 -> 01
  4. 11 -> 01

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

3的下一位是2, 2/2=1; 11的下一位是10, 10/2=5;

8的上一位是9, (8,9)/2都是4 ...

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

  • 偶数x除以2是没有中间元素的,但是因为元素是从0开始, 那么x/2=mid, 这个mid就正好是中间的一个值然后将左右分成了相等大的两部分

    a b M d e f

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

    a b c M d e f [g]

倒数

因为我们不说倒数第0个元素, 而是从1开始的. 所以倒数第一个元素要这么表示

[size - 1] = [size] - 1

倒数第k个元素的下标是 size - k

Clone this wiki locally