每日算法练习(1)

开一个新坑,记录下自己每天的算法练习,希望自己通过1个多月的学习,能够成为算法大神。

下面正式开始新坑。

两个数组的交集

这是牛客上的题,根据题意,我们有多种解法,这题用哈希比较好写。我们可以弄一个bool类型的数组来模拟哈希表。比如让nums1的值放入数组里,然后全为 true。之后,用nums2的值和数组比较,因为有重复的数字,当nums2的值和数组的值相等时,就把这个公共元素放入另一个数组ret,然后让数组里这个值为 false。最后输出ret的值就可以了。

牛客上的代码如下:

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums1 int整型vector 
     * @param nums2 int整型vector 
     * @return int整型vector
     */
  
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        bool hash[1010]={0};
        vector<int> ret;
        for(auto ch:nums1)
        {
            hash[ch]=true;
        }
        for(auto ch:nums2)
        {
            if(hash[ch])
            {
                ret.push_back(ch);
                hash[ch]=false;
            }
        }
        return ret;;
    }
};

点击消除

这一题,很像匹配括号那题。所以,我们可以选择用栈的方式。思路如下:假设字符串 abbc 先把a放入栈里面,然后剩下的跟栈顶元素比,如果等于栈顶元素,就把栈顶元素pop出来,不等于就压入栈内,最后栈里面的就是我们需要的结果了。这一道题有个小技巧,因为是字符串,所以可以用string来模拟栈。

牛客的代码如下:

#include <iostream>
using namespace std;
#include <string>
int main() {
    string s,ret;
    cin>>s;
    for(auto& ch:s)
    {
        if(ret.size()&&ch==ret.back())
        {
            ret.pop_back();
        }
        else ret.push_back(ch);
    }
    if(ret.empty()){
        cout<<'0';
    }
    else cout<<ret;
    return 0;

}

最小花费爬楼梯

这题就是一道比较经典的动态规划问题了。

算法思路:我们创建一个dp[]数组表示到i楼的花费。比如 到第3层的花费就是 dp[3]=cost[2]+dp[2]或者是dp[3]=cost[1]+top[1],然后在取最小的值。如此,我们就得到了到n层的最小花费 dp[n]=min(cost[n-1]+dp[n-1],cost[n-2]+dp[n-2])。

牛客代码如下:

#include <iostream>
using namespace std;
int main() {
    int n;
    cin>>n;
    int cost[n];
    int dp[n+1];
    dp[0]=dp[1]=0;
    for(int i=0;i<n;++i) cin>>cost[i];
    for(int i=2;i<=n;++i)
    {
        dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
    }
    cout<<dp[n];
    return 0;

}

今天就分享这三个题吧,我还得再练

相关推荐

  1. 算法练习----力扣每日一题------1

    2024-04-20 18:28:04       21 阅读
  2. 算法练习----力扣每日一题------2

    2024-04-20 18:28:04       15 阅读
  3. 算法练习----力扣每日一题------3

    2024-04-20 18:28:04       20 阅读
  4. 算法练习----力扣每日一题------5

    2024-04-20 18:28:04       18 阅读
  5. 算法练习----力扣每日一题------6

    2024-04-20 18:28:04       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-20 18:28:04       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-20 18:28:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-20 18:28:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-20 18:28:04       20 阅读

热门阅读

  1. day7arm

    2024-04-20 18:28:04       14 阅读
  2. urllib爬虫案例(实战)

    2024-04-20 18:28:04       18 阅读
  3. 理解汇编中的CALL指令和参数传递

    2024-04-20 18:28:04       19 阅读
  4. C语言-atoi函数的使用和实现

    2024-04-20 18:28:04       12 阅读
  5. Android 打开系统应用

    2024-04-20 18:28:04       18 阅读
  6. Ubuntu 20.04和Ubuntu 16.04 集成显卡支持opencl说明

    2024-04-20 18:28:04       15 阅读
  7. Linux之Vmware中安装Ubuntu注意事项

    2024-04-20 18:28:04       17 阅读
  8. 自动化运维(三十一)Ansible之 YAML 详细介绍

    2024-04-20 18:28:04       14 阅读
  9. go自建线程池执行任务

    2024-04-20 18:28:04       18 阅读
  10. 20204现在还可以下载游戏的地方有哪些?

    2024-04-20 18:28:04       14 阅读
  11. 计算方法实验5:C++实现矩阵的奇异值分解

    2024-04-20 18:28:04       12 阅读