IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 力扣打卡day13 -> 正文阅读

[数据结构与算法]力扣打卡day13

在这里插入图片描述

class Solution {
public:
    char findTheDifference(string s, string t) {
        unordered_map<char,int> cnt;
        for(auto c:s) cnt[c]++;
        for(auto c:t) cnt[c]--;
        for(auto [a,b]:cnt){
            if(b){
                return a;
            }
        }
        return 100;
    }
};

dfs

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int lengthLongestPath(string input) {
        stack<int> stk;//遍历树
        int res=0;
        for(int i=0,sum=0;i<input.size();i++){//i++是要过掉\n
            int k=0;
            while(i<input.size()&&input[i]=='\t') i++,k++;//算有几层
            while(stk.size()>k) sum-=stk.top(),stk.pop();//回溯先把上次遍历的吐掉
            int j=i;
            while(j<input.size()&&input[j]!='\n') j++;//找到结尾
            int len=j-i;
            stk.push(len),sum+=len;
            if(input.substr(i,len).find('.')!=-1){//.文件才判断
                int res1=sum+stk.size()-1;//记得算上\的长度
                res=max(res,res1);
            }
            i=j;
        }
        return res;
    }
};

在这里插入图片描述

class Solution {
public:
    int firstUniqChar(string s) {
        unordered_map<char,int> hash;
        for(auto c:s) hash[c]++;
        for(int i=0;i<s.size();i++){
            if(hash[s[i]]==1){
                return i;
            }
        }
        return -1;
    }
};

dfs

在这里插入图片描述

class Solution {
public:
    vector<int> res;
    vector<int> lexicalOrder(int n) {
        for(int i=1;i<=9;i++){//开头不能为0
            dfs(i,n);
        }
        return res;
    }

    void dfs(int x,int y){
        if(x<=y) res.push_back(x);//遍历树
        else return;//不合法的就剪去
        for(int i=0;i<=9;i++){
            dfs(x*10+i,y);
        }
    }
};

dfs

在这里插入图片描述
在这里插入图片描述

/**
 * // This is the interface that allows for creating nested lists.
 * // You should not implement it, or speculate about its implementation
 * class NestedInteger {
 *   public:
 *     // Constructor initializes an empty nested list.
 *     NestedInteger();
 *
 *     // Constructor initializes a single integer.
 *     NestedInteger(int value);
 *
 *     // Return true if this NestedInteger holds a single integer, rather than a nested list.
 *     bool isInteger() const;
 *
 *     // Return the single integer that this NestedInteger holds, if it holds a single integer
 *     // The result is undefined if this NestedInteger holds a nested list
 *     int getInteger() const;
 *
 *     // Set this NestedInteger to hold a single integer.
 *     void setInteger(int value);
 *
 *     // Set this NestedInteger to hold a nested list and adds a nested integer to it.
 *     void add(const NestedInteger &ni);
 *
 *     // Return the nested list that this NestedInteger holds, if it holds a nested list
 *     // The result is undefined if this NestedInteger holds a single integer
 *     const vector<NestedInteger> &getList() const;
 * };
 */
class Solution {
public:
    NestedInteger deserialize(string s) {
        int u=0;
        return dfs(s,u);
    }

    NestedInteger dfs(string& s,int& u){
        NestedInteger res;
        if(s[u]=='['){
            u++;//[
            while(s[u]!=']') res.add(dfs(s,u));//子节点
            u++;//]
            if(u<s.size()&&s[u]==',') u++;//,
        }else{
            int k=u;
            while(k<s.size()&&s[k]!=','&&s[k]!=']') k++;
            res.setInteger(stoi(s.substr(u,k-u)));
            if(k<s.size()&&s[k]==',') k++;//,
            u=k;
        }
        return res;
    }
};

洗牌算法

在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    vector<int> a;

    Solution(vector<int>& nums) {
        a=nums;
    }
    
    vector<int> reset() {
        return a;
    }
    
    vector<int> shuffle() {
        auto b=a;
        int n=a.size();
        for(int i=0;i<n;i++){
            swap(b[i],b[i+rand()%(n-i)]);
        }
        return b;
    }
};

/**
 * Your Solution object will be instantiated and called as such:
 * Solution* obj = new Solution(nums);
 * vector<int> param_1 = obj->reset();
 * vector<int> param_2 = obj->shuffle();
 */

在这里插入图片描述

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        unordered_map<char,int> cnt;
        for(auto c:magazine) cnt[c]++;
        for(auto c:ransomNote){
            if(!cnt[c]) return false;
            cnt[c]--;
        }
        return true;
    }
};

上台表演算法

在这里插入图片描述
在这里插入图片描述

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* h;
    Solution(ListNode* head) {
        h=head;
    }
    
    int getRandom() {
        int c=-1,n=0;//c是台,n是有几个人了
        for(auto i=h;i;i=i->next){
            n++;
            if(rand()%n==0) c=i->val;
        }
        return c;
    }
};

/**
 * Your Solution object will be instantiated and called as such:
 * Solution* obj = new Solution(head);
 * int param_1 = obj->getRandom();
 */

设计

在这里插入图片描述
在这里插入图片描述

class RandomizedSet {
public:
    unordered_map<int,int> hash;
    vector<int> nums;
    RandomizedSet() {

    }
    
    bool insert(int val) {
        if(hash.count(val)==0){
            nums.push_back(val);
            hash[val]=nums.size()-1;
            return true;
        }
        return false;
    }
    
    bool remove(int val) {
        if(hash.count(val)){
            int y=nums.back();
            int px=hash[val],py=hash[y];
            swap(nums[px],nums[py]);//先交换数组
            nums.pop_back();//删数组
            swap(hash[val],hash[y]);//交换hash
            hash.erase(val);//删hash
            return true;
        }
        return false;
    }
    
    int getRandom() {
        return nums[rand()%nums.size()];
    }
};

/**
 * Your RandomizedSet object will be instantiated and called as such:
 * RandomizedSet* obj = new RandomizedSet();
 * bool param_1 = obj->insert(val);
 * bool param_2 = obj->remove(val);
 * int param_3 = obj->getRandom();
 */

在这里插入图片描述

class Solution {
public:
    int firstUniqChar(string s) {
        unordered_map<char,int> hash;
        for(auto c:s) hash[c]++;
        for(int i=0;i<s.size();i++){
            if(hash[s[i]]==1){
                return i;
            }
        }
        return -1;
    }
};
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:50:37  更:2022-02-28 15:53:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:36:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码