2021_01_28 LeetCode刷题回顾

【LeetCode刷题——数据结构篇】 2022寒假LeetCode刷题——Task01:链表 简介:本人大一学过C++,此后几年间几乎没有使用过,可以称得上是小白了。所以此次刷题会是比较困难的过程,同时也是通过这次的组队学习捡拾起以前的知识,更重要是扩充和巩固。所以这篇blog篇幅可能较长且也有基础型知识的回顾,也是我在做题过程中一步步完成的记录。 一、数组基础题目 (题号:0189)旋转数组 题目:给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 首先要弄清楚的点: vector和array的区别 双指针法 ... 阅读详情

1700. 无法吃午餐的学生数量

简单模拟题。按照题目意思进行模拟即可。

class Solution {
public:
    int countStudents(vector<int>& students, vector<int>& sandwiches)
    {
        int m = students.size();
        int n = sandwiches.size();
        vector<int> eated(m, 1);
        int last = -1;
        for (int i = 0; i < n; i++) {
            bool findFlag = false;
            for (int j = last + 1; j < m; j++) {
                if (eated[j] == 0) {
                    continue;
                }
                if (students[j] == sandwiches[i]) {
                    eated[j] = 0;
                    last = j;
                    findFlag = true;
                    break;
                }
            }
            if (findFlag == true) {
                continue;
            }
            for (auto j = 0; j < last; ++j) {
                if (eated[j] == 0) {
                    continue;
                }
                if (students[j] == sandwiches[i]) {
                    eated[j] = 0;
                    last = j;
                    findFlag = true;
                    break;
                }
            }
            if (findFlag == true) {
                continue;
            }
            break;
        }
        int ans = 0, len1 = eated.size();
        for(int i = 0;i < len1; i++) 
                ans += eated[i];
        return ans;
    }
};

1356. 根据数字二进制下 1 的数目排序

简单模拟题。重写排序规则即可。

class Solution {
public:
    int get(int x){
        int res = 0;
        while (x) {
            res += (x % 2);
            x /= 2;
        }
        return res;
    }
    vector<int> sortByBits(vector<int>& arr) {
        vector<int> bit(10001, 0);
        for (auto x: arr) {
            bit[x] = get(x);
        }
        sort(arr.begin(),arr.end(),[&](int x,int y){
            if (bit[x] < bit[y]) {
                return true;
            }
            if (bit[x] > bit[y]) {
                return false;
            }
            return x < y;
        });
        return arr;
    }
};

1413. 逐步求和得到正数的最小值

简单模拟题。求取出求和过程中的最小值即可,同时进行正数和非负数的区分。

class Solution {
public:
    int minStartValue(vector<int>& nums) {
        int ans = 1, sum = 0, len1 = nums.size();
        for(int i = 0; i < len1; i++) {
            sum += nums[i];
            if(sum < ans)
                ans = sum;
        }
        if(ans >= 1)
            return 1;
        else
            return 1 - ans;
    }
};

1385. 两个数组间的距离值

简单模拟题。按照题目意思模拟即可。

class Solution {
public:
    int findTheDistanceValue(vector<int>& arr1, vector<int>& arr2, int d) {
        int cnt = 0;
        for (auto &x: arr1) {
            bool ok = true;
            for (auto &y: arr2) {
                ok &= (abs(x - y) > d);
            }
            cnt += ok;
        }
        return cnt;
    }
};

1502. 判断能否形成等差数列

简单模拟题。排序两两相减即可。

class Solution {
public:
    bool canMakeArithmeticProgression(vector<int>& arr) {
        sort(arr.begin(), arr.end());
        for (int i = 1; i < arr.size() - 1; ++i) {
            if (arr[i] * 2 != arr[i - 1] + arr[i + 1]) {
                return false;
            }
        }
        return true;
    }
};

1710. 卡车上的最大单元数

简单模拟题。先排序,按照从单元容量从大到小的顺序,之后根据可以选择的数目,每次从大容量的数目减去,直到满足条件即可。

class Solution {
public:
    int maximumUnits(vector<vector<int>>& b, int s) {
        sort(b.begin(),b.end(),[](const auto& L, const auto& R){return L[1] > R[1];});
        int ans = 0, n = 0;
        for (int i = 0; i < b.size() && s > 0; i++) {
            n = min(s, b[i][0]);
            s -= n;
            ans += n * b[i][1];
        }
        return ans;
    }
};

1716. 计算力扣银行的钱

简单模拟题。找规律实现即可。

class Solution {
public:
    int totalMoney(int n) {
        int res = 0;
        for(int i = 1, money = 1; i <= n; i++){
            res += money++;
            if(i % 7 == 0) 
                money = i/7 + 1;
        }
        return res;
    }
};

1475. 商品折扣后的最终价格

简单模拟题。按照题目意思模拟即可。

class Solution {
public:
    vector<int> finalPrices(vector<int>& prices) {
        for (int i = 0; i < prices.size(); ++i)
            for (int j = i + 1; j < prices.size(); ++j)
                if (prices[j] <= prices[i]) {
                    prices[i] = prices[i] - prices[j];
                    break;
                }
        return prices;
    }
};

1636. 按照频率将数组升序排序

简单模拟题。按照题目意思模拟即可。

class Solution {
public:
    vector<int> frequencySort(vector<int>& nums) {
        unordered_map<int, int> cnt;
        int len1 = nums.size();
        for (int i = 0; i < len1; i++)
            cnt[nums[i]] += 1;
        sort(nums.begin(), nums.end(), [&cnt](int a, int b) {
            return (cnt[a] == cnt[b]) ? a > b : cnt[a] < cnt[b];
        });
        return nums;
    }
};

1619. 删除某些元素后的数组均值

简单模拟题。按照题目意思模拟即可。

class Solution {
public:
    double trimMean(vector<int>& arr) {
        int n = arr.size();
        int n5 = n*0.05;
        sort(arr.begin(), arr.end());
        double sum = 0;
        for(int i = n5; i < n- n5; i++)
            sum += arr[i];
        return sum / (n-2*n5);

    }
};

 

系统化刷题训练:提升算法能力与面试表现 算法与数据结构是计算机科学的核心基础,掌握它们能显著提升开发者的编程思维和问题解决能力。通过系统化的刷题训练,开发者可以深入理解双指针、动态规划等经典算法模板的原理与应用。这些技术不仅能帮助应对技术面试,更能优化实际工程中的代码质量和执行效率。采用科学的刷题方法论,如五步刷题法和错题本管理,配合Python或Java等适合的语言环境,可以有效突破学习瓶颈。从LeetCode等平台入手,结合《算法导论》等经典资源,三个月系统训练就能看到显著提升。 阅读详情

相关推荐

力扣刷题01 - 编程学习

力扣刷题是一个很好的平台,提供了丰富的题目和讨论,可以帮助我们不断进步。力扣(LeetCode)是一个知名的在线编程题库,提供了各种难度级别的算法题目,适合不同层次的程序员进行练习和学习。如果找到了符合条件的索引,我们将其以列表形式返回,其中第一个索引是哈希表中存储的索引,第二个索引是当前遍历的索引。通过刷题和学习,我们可以提高编程能力和算法思维,逐步掌握更复杂的题目和解题技巧。在解决每个问题之前,先了解相关的算法和数据结构知识,这样可以更好地理解问题的本质和解题思路。每次解题后,都要进行总结和学习。

IELLQUI8的博客 303

ccf-csp 201503-2数字排序

ccf-csp 201503-2 数字排序 给定 n 个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。 输入格式 输入的第一行包含一个整数 n,表示给定数字的个数。 第二行包含 n 个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。 输出格式 输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。 按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。 数据范围 1≤n≤1000, 给出的数都是不超过 1000 的非负整数。 输入样

chenwenqqqq的博客 432

SAP采购订单行项目增强实战:用BADI ME_GUI_PO_CUST添加自定义字段(避坑指南)

本文详细解析了如何通过BADI ME_GUI_PO_CUST在SAP采购订单行项目中添加自定义字段,包括技术架构理解、字段扩展步骤、自定义函数组创建及BADI实现。文章特别强调了避开官方文档未提及的陷阱,如字段映射限制和屏幕显示问题,并提供了高级优化技巧和性能建议。

weixin_30402343的博客 594

LeetCode刷题攻略

分析错误:如果遇到错题,仔细分析错误原因并查找资料进行补充学习。回顾解法:总结解法背后的算法思路及其适用场景,确保知识内化。通过系统性刷题、定期复习、充分利用讨论区和总结错题,可以更有效地提高自己的算法能力和面试准备程度。最重要的是保持持续学习的态度和耐心,不断挑战自我。祝你在 LeetCode 刷题和面试中取得优秀的成绩!如果你还有其他具体问题或需要进一步的帮助,请告诉我!

Jak的博客 1702

避开STM32H7的‘保护陷阱’:从Option Byte机制深度解析读写保护原理与预防

本文深度解析STM32H723VGT6的Option Byte保护机制,详细讲解RDP读保护和WRP写保护的工作原理及配置方法,并提供硬件设计防御策略和软件预防性编程技巧,帮助开发者避免误触发保护机制导致芯片锁定的问题。

weixin_33686714的博客 441

常见信号逻辑电平标准介绍:TTL、CMOS、ECL、LVDS、CML

逻辑电平是指数字信号电压的高、低电平,相关参数定义如下:(1)输入高电平门限Vih:保证逻辑门的输入为高电平时所允许的最小输入高电平,当输入电平高于Vih时,则认为输入电平为高电平;(2)输入低电平门限Vil:保证逻辑门的输入为低电平时所允许的最大输入低电平,当输入电平低于Vil时,则认为输入电平为低电平;(3)输出高电平门限Voh:保证逻辑门的输出为高电平时的输出电平的最小值,逻辑门的输出为高电平时的电平值都必须大于此Voh;

liuchj的博客 1万+

【Leetcode】刷题题单记录

Leetcode 算法题刷刷刷!!!

zcw1234515的博客 2408

SAR成像概述

1. 发展概述 雷达是英文Radar(Radio detection and ranging)的音译,原意为“无线电探测与测距”。雷达的发明是无线电发展史上的里程碑,二战时,英国急需通过雷达探测空中金属物体来帮助搜寻德国飞机,这期间,雷达技术飞速发展,发展出了地对空、空对地轰炸、空对空火控、敌我识别等功能。雷达在第二次世界大战中发挥了重大作用,至今仍是军用和许多民用领域的重要传感器。 早期雷达系统通过时间延迟来测距,通过天线指向来测角,通过多普勒频移测速。1951年,Carl Wiley发现,通..

5070

算法题刷题的一点感受和建议

现在的公司在面试招聘的时候(尤其是校招),还是非常在意候选人的算法思维和代码能力的,所以面试过程中的算法题现场写代码这一环节基本是跑不掉了。但是手撕代码这一块的确是最难准备的环节,对于绝...

程序员吴师兄的博客 5006

【Bug已解决】Claude Desktop Cowork 报错 Workspace unavailable 解决方案

方案适用场景推荐指数确认虚拟机镜像下载完整性排查的第一步,最基础的前提检查⭐⭐⭐⭐⭐确认虚拟机平台功能已启用Windows 系统功能层面的必要条件⭐⭐⭐⭐⭐重启 CoworkVMService快速尝试恢复服务正常状态⭐⭐⭐⭐完全重启客户端排除临时性状态错乱⭐⭐⭐⭐降级使用文件工具临时替代方案,不阻塞当前工作⭐⭐⭐报错的本质是Cowork 功能依赖的虚拟机管理服务,在 Windows 应用包隔离机制下未能正确定位虚拟机文件的实际存放路径。

博客 6229

[nvidia-GB200-安装]ubuntu24.04高端GPU gb200 570.158.01驱动安装解读及gb200一键化安装脚本,复制即可安装

【代码】[nvidia-GB200]高端GPU gb200 驱动安装解读及gb200一键化安装脚本,复制即可安装。

jundao1997的专栏 873

leetcode高效刷题路径,题不在多在于精

leetcode高效刷题路径,题不在多在于精,刷题不迷路,反反复复刷,一文就够了

qq_46118239的博客 1085

PHP实现获取当地网络时间​(附完整源码)

PHP实现获取当地网络时间​(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 236

【力扣hot100】刷题笔记Day25

动态规划2:单词拆分 + 最长递增子序列 + 乘积最大子数组 + 分割等和子集 + 最长有效括号

小涛44的博客 1388

51单片机+L298驱动步进电机+L297测速+LCD1602显示+按键调试+Proteus仿真

51单片机+L298驱动步进电机+L297测速+LCD1602显示+按键调试+Proteus仿真 *Proteus仿真 L298N是双H桥式驱动器。 L297是步进电机控制集成芯片(包括环形分配器),可产生四相驱动信号,应用于微处理机控制两相双极性和四相单极性步进电机。电动机可由半阶梯、正常和斩波驱动模式驱动,同时设于晶片内的PWM斩波线路容许以开关形式控制线路的电流。此器件只需要时钟、方向和模式输入信号。相位是由内部产生的,因此可减轻微处理机和程序设计的负担。 实例代码 /************

perseverance51博客 4584

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

刷穿LeetCode——Task01

刷穿LeetCode——Task01 报名了DataWhale的LeetCode编程实践的组队学习,每天3道题,这篇博客记录Task01。 02. 两数相加 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465

Ford程的博客 260

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C++力扣题目 01背包理论基础

讲了这么多才刚刚把二维dp的01背包讲完,这里大家其实可以发现最简单的是推导公式了,推导公式估计看一遍就记下来了,但难就难在如何初始化和遍历顺序上。可能有的同学并没有注意到初始化 和 遍历顺序的重要性,我们后面做力扣上背包面试题目的时候,大家就会感受出来了。下一篇 还是理论基础,我们再来讲一维dp数组实现的01背包(滚动数组),分析一下和二维有什么区别,在初始化和遍历顺序上又有什么差异,敬请期待以上的讲解可以开发一道面试题目(毕竟力扣上没原题)。

weixin_47675625的博客 1194

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LeetCode刷题笔记

文章目录1.数据结构1.1字符串、数组、链表1.2队列、栈1.3堆1.4树1.4.1二叉树1.4.2二叉搜索树 4`1.4.3字典树1.4.4树状数组1.4.5线段树1.5图 2`1.6哈希表1.7Ordered Map2.简单算法2.1位运算2.2双指针2.3排序算法2.4二分查找3.复杂算法3.1递归、回溯算法、深度优先搜索(DFS)3.2广度优先搜索(BFS)3.3拓扑排序 4`3.4贪心算法3.5分治算法3.6滑动窗口算法3.7极小化极大 7`3.8并查集3.9动态规划4.其他4.1Random 6

打瞌睡_的博客 2159

二刷leetcode200题回顾

1、两数之和 使用unoredred_map进行存储,注意!map的申请形式是<int,int> class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int n=nums.size(); unordered_map<int,int> map1; for(int i=0;i<n;i++){

weixin_41169280的博客 601

Leetcode力扣秋招刷题路-0399

除法求值

qq_43022896的博客 451

Python刷题心法:从力扣新手到算法高手的实战进阶指南

算法与数据结构是编程的核心基础,其本质是通过高效组织与处理数据来解决复杂问题。理解其原理能显著提升代码性能与问题解决能力,在面试、系统设计和性能优化等场景中具有极高价值。本文聚焦Python语言在算法学习中的应用,深入探讨双指针、滑动窗口、动态规划等核心算法思想,并结合力扣(LeetCode)平台,系统分享从环境配置、心态管理到专题突破、深度复盘的完整刷题方法论。通过剖析Python实现中的常见陷阱与优化技巧,旨在帮助开发者建立坚实的算法知识体系,实现从暴力解法到最优解的思维跃迁,最终在工程实践与求职竞争中

weixin_30655569的博客 451

leetcode刷题[22天小总结] 面试题 01.09. 字符串轮转

给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。输入:s1 = “waterbottle”, s2 = “erbottlewat”21天能够形成一个习惯,从7号开始开始坚持刷题,已经23天了。输入:s1 = “aa”, s2 = “aba”字符串长度在[0, 100000]范围内。欢迎评论区交流,每日打卡,冲冲冲!你能只调用一次检查子串的方法吗?

木秀林的博客 678

LeetCode高效刷题指南:从零到精通,掌握算法面试核心方法论

算法是计算机科学的核心基础,其本质是通过一系列指令高效解决特定问题的计算模型。理解算法原理,如时间与空间复杂度分析,是评估解决方案优劣的关键。掌握经典数据结构(如数组、链表、哈希表)与算法思想(如双指针、动态规划、回溯),能显著提升解决复杂工程问题的能力,其技术价值在于培养系统性的计算思维和高效的代码实现能力。这些技能在搜索引擎优化、大数据处理、推荐系统等广泛的应用场景中至关重要。本文基于广为流传的“谷歌大佬推荐”的**四步刷题法**,系统梳理了从环境准备到专题突破的完整路径,并提供了针对数组、链表、二叉树

weixin_30340617的博客 334

力扣刷题总结c++ 解题报告(持续更新中)

写这篇的初衷是整理复习一遍自己刷过的题,加深印象 有错误或意见欢迎评论区留言~ 目录1. 两数之和2. 两数相加3. 无重复字符的最长子串5. 最长回文子串6. Z 字形变换7. 整数反转8. 字符串转换整数 (atoi)70. 爬楼梯300. 最长递增子序列 1. 两数之和 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不

Mu_Muxi_的博客 2165

代码随想录刷LeetCode | 贪心刷题回顾01

理解题目后5分钟没思路就跳;贪心算法:要不就是特简单,要不就是死活想不出来。

weixin_40142386的博客 144
上一篇: 2021_01_27 LeetCode刷题
下一篇: 2021_01_29 LeetCode刷题
Ls_attack
博客等级 码龄10年 25粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值