zoukankan      html  css  js  c++  java
  • 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 的值

      

  • 相关阅读:
    迭代器和生成器
    函数嵌套
    页面调用dll
    C++MFC之picture control控件铺满图片
    C++中去掉string字符串中的 等
    C++之map使用
    C++之条形码,windows下zint库的编译及应用(二)
    C++之条形码,windows下zint库的编译及应用(一)
    C++通过HTTP请求Get或Post方式请求Json数据(转)
    从长字符串中获取想要的字符串
  • 原文地址:https://www.cnblogs.com/liang-yi-/p/13363959.html
Copyright © 2011-2022 走看看