Leetcode面试热题(七)

本文汇总了社招中大厂常考的LeetCode高频算法题,涵盖背包、DFS、BFS、动态规划等各类经典问题,推荐的题目数量约为一百道,建议在LeetCode或牛客网上进行刷题,以便学习不同解法。
摘要由CSDN通过智能技术生成

       如今不论是校招还是社招,大多数公司都会有笔试+面试的算法题,以此来考察候选人的数据结构和算法能力,因此我们面试前最好复习下算法,简单来说就是刷题呗!

        以下是本人社招时在Leetcode和牛客网上的大厂的高频题,大概二三百道,此系列只列出最热门的一百来道,代码都是Leetcode上的,可以正常运行。大家可以根据下面推荐的题目来有选择的刷题,最好是进入Leetcode或牛客来刷,里面有许多优秀解法可以参考!

        常见算法有背包、DFS、BFS、动态规划、数组、状态压缩、图优化、数学推导、字符串、链表二叉树、邻接表、图优化等等。

        下面是正常的题目,大家可以参考一下:

1、比较版本号
https://leetcode-cn.com/problems/compare-version-numbers/
/**
输入:version1 = "0.1", version2 = "1.1"
输出:-1
解释:version1 中下标为 0 的修订号是 "0",version2 中下标为 0 的修订号是 "1" 。0 < 1,所以 version1 < version2

**/
class Solution {
public:

    void sub(string version1,vector<string> &res){

        while (!version1.empty()) {

            int i = 0;
            while (i < version1.size() && version1[i] != '.') {
                i++;
            }

            string s1 = version1.substr(0, i);
            res.push_back(s1);
            if (i + 1 >= version1.size())
                break;
            version1 = version1.substr(i+1);

	    }
    }

    int compareVersion(string version1, string version2) {

        vector<string> res1;
        vector<string> res2;
        sub(version1,res1);
        sub(version2,res2);
        int i = 0;
        for(;i<res1.size()&&i<res2.size();i++){
            int k1 = stoi(res1[i]);
            int k2 = stoi(res2[i]);
            if(k1>k2)return 1;
            if(k1<k2)return -1;
        }
        int k1 =i,k2=i;
        while(k1<res1.size()){
            if(stoi(res1[k1])==0)
                k1++;
            else
                return 1;
        }
        while(k2<res2.size()){
            if(stoi(res2[k2])==0)
                k2++;
            else
                return -1;
        }

        return 0;
    }
};


//2021.05.29
2、最小生成树  ————  可以采用并查集
/*
描述
一个有n户人家的村庄,有m条路连接着。村里现在要修路,每条路都有一个代价,现在请你帮忙计算下,最少需要花费多少的代价,就能让这n户人家连接起来。

示例1
输入:
3,3,[[1,3,3],[1,2,1],[2,3,1]]


返回值:
2

*/

class Solution {
publi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值