408算法题leetcode--第38天

155. 最小栈

题目地址155. 最小栈 - 力扣(LeetCode)

题解思路:两个栈,一个存数据,另一个存最小值

时间复杂度:O(1)

空间复杂度:O(n)

代码:

cpp 复制代码
class MinStack {
public:
    stack<int>stk;
    stack<int>min_stk;

    MinStack() {
        // 两个栈,一个栈存最小值
        min_stk.push(INT_MAX);
    }
    
    void push(int val) {
        stk.push(val);
        min_stk.push(min(min_stk.top(), val));
    }
    
    void pop() {
        stk.pop();
        min_stk.pop();
    }
    
    int top() {
        return stk.top();
    }
    
    int getMin() {
        return min_stk.top();
    }
};

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack* obj = new MinStack();
 * obj->push(val);
 * obj->pop();
 * int param_3 = obj->top();
 * int param_4 = obj->getMin();
 */

461. 汉明距离

题目地址461. 汉明距离 - 力扣(LeetCode)

题解思路:模拟题

时间复杂度:O(log(2^31))

空间复杂度:O(1)

代码:

cpp 复制代码
class Solution {
public:
    int hammingDistance(int x, int y) {
        // z = x ^ y,检查z的每一位,如果是1就++
        int ret = 0, z = x ^ y;
        while(z){
            ret += z & 1;
            z >>= 1;
        }
        return ret;
    }
};

448. 找到所有数组中消失的数字

题目地址448. 找到所有数组中消失的数字 - 力扣(LeetCode)

题解思路:常见模拟

时间复杂度:O(n)

空间复杂度:O(1)

代码:

cpp 复制代码
class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        // 遍历nums,如4,就在下标为4的位置取负数
        // 第二次遍历nums,如果值为正数,则加入ret
        int size = nums.size();
        vector<int>ret;
        for(auto& i : nums){
            int id = abs(i);
            nums[id - 1] = -abs(nums[id - 1]);
        }
        for(int i = 0; i < size; i++){
            //cout << nums[i] << ' ';
            if(nums[i] > 0){
                ret.push_back(i + 1);
            }
        }
        return ret;
    }
};
相关推荐
itsuifengerxing36 分钟前
python 自定义无符号右移
算法
猎板PCB厚铜专家大族1 小时前
高频 PCB 技术发展趋势与应用解析
人工智能·算法·设计规范
dying_man1 小时前
LeetCode--24.两两交换链表中的结点
算法·leetcode
yours_Gabriel1 小时前
【力扣】2434.使用机器人打印字典序最小的字符串
算法·leetcode·贪心算法
草莓熊Lotso2 小时前
【数据结构初阶】--算法复杂度的深度解析
c语言·开发语言·数据结构·经验分享·笔记·其他·算法
KyollBM2 小时前
【CF】Day75——CF (Div. 2) B (数学 + 贪心) + CF 882 (Div. 2) C (01Trie | 区间最大异或和)
c语言·c++·算法
CV点灯大师2 小时前
C++算法训练营 Day10 栈与队列(1)
c++·redis·算法
GGBondlctrl3 小时前
【leetcode】递归,回溯思想 + 巧妙解法-解决“N皇后”,以及“解数独”题目
算法·leetcode·n皇后·有效的数独·解数独·映射思想·数学思想
武子康3 小时前
大数据-276 Spark MLib - 基础介绍 机器学习算法 Bagging和Boosting区别 GBDT梯度提升树
大数据·人工智能·算法·机器学习·语言模型·spark-ml·boosting
武子康3 小时前
大数据-277 Spark MLib - 基础介绍 机器学习算法 Gradient Boosting GBDT算法原理 高效实现
大数据·人工智能·算法·机器学习·ai·spark-ml·boosting