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

追梦人 2021-11-25 22:31:20

一.33. 搜索旋转排序数组
这三道数组题虽然会基本二分查找但是没有完全看明白题意,就先没管旋转了,就不用二分

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int index = -1;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] == target) {
                return i;
            }
        }
        return index;
    }
};

二.搜索旋转排序数组 II

class Solution {
public:
    bool search(vector<int>& nums, int target) {
        
        for (int i = 0; i < nums.size(); i++) {
            if (target == nums[i]) {
                return true;
            }
        }
        return false;
    }
};

三.寻找旋转排序数组中的最小值

class Solution {
public:
    int findMin(vector<int>& nums) {
        int min = 5000;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] < min) {
                min = nums[i];
            }
        }
        return min;
    }

};
四.爬楼梯
递归超时,
今天学会了一种新方式动态的数组那样因为结果是只用前二个,前面的所有系列后面不用放在就浪费空间了

//第一种

class Solution {
public:
    int climbStairs(int n) {
        if (n <= 2) {return n;}
        int arr[1000] = {0};
        arr[1] = 1,arr[2] = 2;
        int i;
        for (i=3; i <= n; i++) {
            arr[i] = arr[i-1] + arr[i-2];
        }
        return arr[i-1];
        
    }

};
//第二种
class Solution {
public:
    int climbStairs(int n) {
        if (n <= 2) {return n;}
        int a = 1,b = 2;
        int i;
        for (i=3; i <= n; i++) {
           int c = a + b;
           a = b;
           b = c;
        }
        return b;
    }
};

五.斐波那契数

class Solution {
public:
    int fib(int n) {
        if(n < 2) return n;
        int dp[2];
        dp[0] = 0,dp[1] = 1;
        for (int i = 2; i <= n; i++) {
            int sum = dp[0] + dp[1];
            dp[0] = dp[1];
            dp[1] = sum;
        }
        return dp[1];
    }
};

class Solution {
public:
    int fib(int n) {
        if(n < 2) return n;
        return fib(n-1) + fib(n-2);
    }
};

class Solution {
public:
    int fib(int n) {
        if(n < 2) return n;
        int arr[31] = {0};
        arr[1] = 1;
        int i;
        for ( i = 2; i<=n; ++i) {
            arr[i] = arr[i-1] + arr[i-2];
        }
        return arr[i-1];
    }
};

六.第 N 个泰波那契数

class Solution {
public:
    int tribonacci(int n) {
        if (n == 0) {
            return 0;
        } else if (n == 1 || n == 2){
            return 1;
        }
        int dp[3];

        dp[0] = 0,dp[1] = 1,dp[2] = 1;
        for (int i = 3; i <= n; i++) {
            int sum = dp[0] + dp[1] + dp[2];
            dp[0] = dp[1];
            dp[1] = dp[2];
            dp[2] = sum;
        }
        return dp[2];
    }
};

七.差的绝对值为 K 的数对数目

class Solution {
public:
    int countKDifference(vector<int>& nums, int k) {
        int cnt = 0;
        for (int i = 0; i < nums.size(); i++) {
            for (int j = i+1; j < nums.size(); j++) {
                if (abs(nums[i] - nums[j]) == k) {
                    ++cnt;
                }
            }
        }
        return cnt;
    }
};

八.LCP 01. 猜数字

class Solution {
public:
    int game(vector<int>& guess, vector<int>& answer) {
        int cnt = 0;
        int i;
        for (i = 0; i<3; i++) {
            if(guess[i] == answer[i]) {++cnt;}
        }
        return cnt;
    }
};
//三目我觉得好看点
class Solution {
public:
    int game(vector<int>& guess, vector<int>& answer) {
        int cnt = 0;
        int i;
        for (i = 0; i<3; i++) {
            cnt += (guess[i] == answer[i]) ? 1 : 0;
        }
        return cnt;
    }
};

九.拿硬币

一开始用判断奇数偶数后面发现int 偶数+1/2次数还是一样

class Solution {
public:
    int minCount(vector<int>& coins) {
        int cnt = 0;
        int i;
        for (i = 0; i<coins.size(); i++) {
            cnt += (coins[i] + 1) / 2;
        }
        return cnt;
    }
};

今天学了还学了下二分查找但是只是会正常的二分查找还不会用到题目上没有完全理解那个旋转数组的那个题意再研究一下坚持。

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

5.9w+

社区成员

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

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