Day 28

剑指offer 11:

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。  来源:力扣(LeetCode)

1、可以使用二分法,用中间的元素将数组分为两部分,然后寻找最小的值;

  当最右边high的元素小于最中间的元素mid,将low=mid+1;

  当最右边high的元素大于中间的元素,将low=mid;

  这样多次循环可以寻找到最小值。

  

2、因为旋转数组的性质,遍历数组,比较本身这个元素和下一个元素;、

  当首次比较得出下一个比这个小时,这就是最小值。

  

第66题:

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

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。来源:力扣(LeetCode)

1、在没有进位的情况下,只需要将数组最后一个元素加一即可,例如:45->46

  当有进位时,需要一个条件来判定元素进位是否全部完成,当元素+1时,如果它需要进位那么它%10一定等于0;

  那么就将这个作为条件,当+1后这个元素不等于0,就直接返回这个数组;

  当元素+1时,数组内所有位都进位的时候,可以将数组申请更新长度加一,然后首位变1即可;例如:999->1000

  

第69题:

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 x 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。来源:力扣(LeetCode)

1、二分法,定义mid时1到x的中间位置的数;

  此时判断mid*mid和x的大小;

  如果大于x就说明根号x的值在mid左边,所以将最右边right定位到mid-1;

  如果小于x就说明根号x的值在mid右边,所以将最左边left定位到mid+1;

  多次循环会找到接近根号x 的值

  

posted @ 2020-07-22 23:57  Liang-Yi  阅读(110)  评论(0编辑  收藏  举报