[学习报告]《LeetCode零基础指南》((第四讲) 一维数组)

珏钰鱼1 西安邮电大学 2021-11-25 23:48:25

 

第一题:搜索旋转排序数组

使用二分查找,先利用二分查找找出断点,再根据目标值位置断点一侧继续用二分法寻找目标元素。

int search(int* nums, int numsSize, int target){
    //先利用二分法寻找数组的最小值,即开始旋转的下标k
    int low = 0,high = numsSize-1;
    int mid = 0;
    while(low<=high){
        mid = (high+low)/2;
        if(nums[mid]>nums[0])//向右查找
            low = mid+1;
        else if(nums[mid]<nums[0]&&nums[mid-1]>nums[0])//此时mid恰好为开始旋转的下标
            break;
        else
            high = mid-1;
    }
    //再将下标值k对应的值与目标值比较,继续利用二分法在一边查找目标值
    if(nums[mid]==target)
        return mid;
    if(target<nums[0]||mid==0){
        low = mid+1;
        high = numsSize-1;
    }else{
        low = 0;
        high = mid-1;
    }

    while(low<=high){
        mid = (high+low)/2;
        if(target==nums[mid])
            return mid;
        else if(target>nums[mid])
            low = mid+1;
        else
            high = mid-1;
    }
    return -1;
}

 

第二题:搜索旋转排序数组 II

 

 

第三题:寻找旋转排序数组中的最小值

 

第四题:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

方法一:动态规划,利用斐波那契数列计算。

 

第五题:斐波那契数

 

第六题:第 N 个泰波那契数

泰波那契序列 Tn 定义如下: 

T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2。给你整数 n,请返回第 n 个泰波那契数 Tn 的值。

 

 

第七题:差的绝对值为 K 的数对数目

 

第八题:猜数字

小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?

输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。

 

 

第九题:拿硬币

桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。 

总结:

1.二分查找

当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。
基本思想:假设数据是按升序排序的,对于给定值n,从序列的中间位置mid开始比较,
如果当前位置arr[mid]值等于n,则查找成功;
若n小于当前位置值arr[mid],则在数列的前半段中查找,arr[left,mid-1];
若n大于当前位置值arr[mid],则在数列的后半段中继续查找arr[left+1,right],
直到找到为止,时间复杂度:O(log(n)) 。
 

...全文
16 7 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
相关推荐
发帖
万人千题
创建于2021-10-14

5.9w+

社区成员

学习「 算法 」的捷径就是 「 题海战略 」,社区由「 夜深人静写算法 」作者创建,三年ACM经验,校集训队队长,亚洲区域赛金牌,世界总决赛选手。社区提供系统的训练,答疑解惑,面试经验,大厂内推等机会
帖子事件
创建了帖子
2021-11-25 23:48
社区公告

添加群主微信:18368041307 进行《算法零基础100讲》每日打卡专项训练。