
leetcode
学不会就继续学
这个作者很懒,什么都没留下…
展开
-
leetcode第26题
leetcode第26题题目给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路这题时双指原创 2021-09-30 16:52:13 · 202 阅读 · 0 评论 -
leetcode第860题柠檬水找零
leetcode第860题柠檬水找零题目在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回false 。来源:力扣(Le原创 2021-09-27 16:07:34 · 140 阅读 · 0 评论 -
leetcode刷题笔记目录
leetcode刷题笔记目录,持续更新按题号题号题目题解难度标签445分发饼干c++贪心算法按算法原创 2021-09-27 15:39:05 · 263 阅读 · 0 评论 -
leetcode第445题分发饼干
leetcode第445题分发饼干题目假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j]= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetboo原创 2021-09-27 15:38:15 · 362 阅读 · 0 评论 -
leetcode第1024题视频拼接
leetcode第1024题视频拼接你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1] 结束。我们甚至可以对这些片段自由地再剪辑,例如片段 [0, 7] 可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。我们需要将这些片段进行再剪辑,并将剪辑后的内容拼接成覆盖整个运动过程的片段([0, T])。返回所需片段的最小数原创 2021-09-23 16:34:38 · 187 阅读 · 0 评论 -
leetcode第1262题可被三整除的最大和
leetcode第1262题 可被三整除的最大和题目可被三整除的最大和给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和。思路每个数只有选和不选两种状态,那么根据什么转移呢,因根据当前数模3之后3的余数来进行转移。dp[i][0]=到i为止被三整除的最大和dp[i][1]=到i为止除三余1的最大和dp[i][2]=到i为止除三余2的最大和当nums[i-1]%3==0时,加入当前的数字不会对除以三的结果造成影响dp[i][0]=max(dp[i-1][0],dp原创 2021-09-23 09:28:25 · 214 阅读 · 0 评论 -
leetcode第322题零钱兑换
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。思路背包问题。动规分析如下:1确定dp数组以及下标的含义dp[i]=凑足总额为j所需钱币的最少个数为dp[i]2确定递推公式得到dp[i](考虑coins[j]),只有一个来源,dp[i]- coins[j]](没有考虑coins[j])。凑足总额为i - .原创 2021-09-22 22:07:19 · 231 阅读 · 0 评论 -
leetcode第478题 在圆内随机生成点
leetcode第478题 在圆内随机生成点方法一(不知道为啥过不了)先在半径上任意取一个点,到圆心的距离为x,然后用勾股定理,根据半径和x的值,可以算出来在从x到圆上的最大距离y_max,再在这上面随便选一个点y,然后加上原来的圆心坐标,就是所取到的点class Solution {public: double radius, x_center,y_center; Solution(double radius, double x_center, double y_center) {原创 2021-09-22 20:05:08 · 209 阅读 · 0 评论 -
leetcode第470题
leetcode第470题 用 Rand7() 实现 Rand10()思路只要保证1-10的数字出现概率相等就可以了可以先求0-9的概率相等,然后再加1那么只需要用rand()7凑出若干个出现概率相等的0-9的倍数的数字就行第一次想到的是从7-70里面去掉8-10,剩下11-70,然后%10就是等概率的0-9第二次优化了,变成1-49去掉1-9方法一// The rand7() API is already defined for you.// int rand7();// @retur原创 2021-09-22 16:10:35 · 201 阅读 · 0 评论 -
leetcode401题二进制手表
leetcode401 二进制手表思路回溯算法每一个数字有两种可能0或者1每点亮一盏灯,对应的小时数和分钟数就会改变选够n个1也就是到达了能点亮的总灯数就退出代码class Solution {public: vector<string> res; vector<string> readBinaryWatch(int turnedOn) { vector<int> track; //每一盏灯点亮原创 2021-09-18 16:41:14 · 86 阅读 · 0 评论 -
leetcode第46题全排列
leetcode第46题全排列思路典型的回溯问题。其实就是一道全排列问题,先确定第一个数字,再接着确定下面的数字比如[1,2,3]先确定了1,然后继续确定下面的数字这个时候已经选择过的数字就不能再选择了,所以要先检测当前加入的数字是否已经选择过这个可以新增一个数组做哈希表来查询,加入数字的时候把哈希表的值置为1,删除的时候置为0,查询对应的数字对应的值即可代码class Solution {public: vector<vector<int>> res;原创 2021-09-18 15:56:19 · 95 阅读 · 0 评论 -
leetcode面试08.04题,回溯算法
题目幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。输入: nums = [1,2,3]输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]说明:解集不能包含重复的子集。思路这是一道回溯算法题,可以转化为求数组内0-n个数字的全排列问题。怎么穷举全排列的呢?比方说给三个数 [1,2,3],先看0个数字,那就只要有空集再到一个数字,那就是分别取数组中的每一个数字再到两个数字求全原创 2021-09-18 15:19:37 · 153 阅读 · 0 评论 -
leetcode1403题
leetcode1403题 非递增顺序的最小子序列思路贪心算法从大到小依次取元素,直到取到满足条件的数组就可以排序,先求和,只需要求到一个子序列的和大于剩下元素的和,就是要求的结果class Solution {public: vector<int> minSubsequence(vector<int>& nums) { //排序,先求和,只需要求到一个子序列的和大于剩下元素的和,就是要求的结果 int n=nums.siz原创 2021-09-14 17:14:22 · 117 阅读 · 0 评论 -
leetcode第1282题
leetcode第1282题题目有一说一这题的中文题目太难懂了,看英文比较好懂There are n people that are split into someunknown number of groups. Each person is labeled with a unique ID from0 to n - 1.You are given an integer array groupSizes, where groupSizes[i] is thesize of the grou原创 2021-09-14 16:59:42 · 101 阅读 · 0 评论 -
leetcode第1221题
leetcode第1221题 分割平衡字符串贪心算法从左到右依次匹配,匹配上的话平衡字符串就+1class Solution {public: int balancedStringSplit(string s) { int n=s.size(); //存储字符,L加R减,当等于0的时候说明刚好有一组平衡字符串 int num=0; //存储平衡字符串的个数 int res=0; for原创 2021-09-14 10:11:04 · 164 阅读 · 0 评论 -
leetcode第55题
55跳跃游戏贪心算法如果目前循环到的坐标比你能到达的坐标大,说明这个坐标永远也到达不了,返回false只要能到第i个坐标,那前i-1个坐标都能到达,只需要已知能到达的最大坐标和前i-1个坐标为起点能到达的位置哪个更大,就可以不断更新最大坐标如果能把所有坐标都走一遍,说明能到最后一个下标class Solution {public: bool canJump(vector<int>& nums) { int can_reach=0;原创 2021-09-14 09:49:17 · 173 阅读 · 0 评论 -
leetcode第932题漂亮数组
leetcode第932题漂亮数组这题太有数学背景了,本菜鸡根本想不到这么漂亮的规律,哭了对于某些固定的 N,如果数组 A 是整数 1, 2, …, N 组成的排列,使得:对于每个 i < j,都不存在 k 满足 i < k < j 使得 A[k] * 2 = A[i] + A[j]。那么数组 A 是漂亮数组。输入:4输出:[2,1,4,3]数学知识1.如果数组A{a1,a2,a3...an}是漂亮数组,那么对于A上的每一个数ai都a * ai + b 变换之后得到原创 2021-09-13 16:39:02 · 295 阅读 · 0 评论 -
leetcode第215题
leetcode第215题方法一:选择排序选择排序,第k轮可以求得第k大的数字class Solution {public: int findKthLargest(vector<int>& nums, int k) { //选择排序,第k轮可以求得第k大的数字 int n=nums.size(); for(int i=0;i<k;i++) { int maxIndex=i;原创 2021-09-06 16:52:10 · 387 阅读 · 0 评论 -
leetode第53题
leetode第53题给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。方法一:暴力法class Solution {public: int maxSubArray(vector<int>& nums) { int n=nums.size(); int res=-1000000; for(int i=0;i<n;i++) {原创 2021-09-06 16:34:49 · 85 阅读 · 0 评论 -
leetcode第169题
leetcode第169题:多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。方法一:排序法因为多数元素的是出现次数大于n/2的元素,所以中间那个元素一定是多数元素时间复杂度O(nlgn),空间复杂度O(1)class Solution {public: int majorityElement(vector<int>& nums) {原创 2021-09-03 09:24:18 · 438 阅读 · 0 评论 -
leetcode第1518题
暴力法:每次喝掉numExchange瓶酒,然后去换一瓶新酒,换到酒已经不够换为止,再把剩下的酒全部喝光class Solution {public: int numWaterBottles(int numBottles, int numExchange) { //记录剩下的酒的数目 int left=numBottles; //记录喝了多少瓶酒 int res=0; while(left>=numExcha原创 2021-08-31 21:34:48 · 80 阅读 · 0 评论 -
leetcode第1475题商品折扣后的最终价格
方法一:暴力法依次遍历每个元素,找到第一个下标大于当前元素且值小于当前元素的元素,然后两元素值相减即可class Solution {public: vector<int> finalPrices(vector<int>& prices) { int size=prices.size(); vector<int> res(size,0); //最暴力的方法,依次遍历每个元素,找到第一个下标大于当前元素且原创 2021-08-31 21:18:25 · 215 阅读 · 0 评论 -
leetcode第1160题拼写单词
方法一:哈希表暴力法用一个哈希表来统计字母表中每个字符的个数再依次统计每个单词的每个字符的个数如果这个单词每个字符的数量都小于等于字母表中字符的个数就说明可以被拼写出来class Solution {public: int countCharacters(vector<string>& words, string chars) { //用哈希表记录字母表中的字符串的个数 map<char,int> let原创 2021-08-31 21:04:12 · 116 阅读 · 0 评论 -
leetcode第206题反转链表
leetcode第206题反转链表方法一:暴力法最暴力的方法,把链表的数字存到数组里,反转数组,然后把数组里的数一个个加到链表里/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(null原创 2021-08-31 20:38:14 · 81 阅读 · 0 评论 -
leetocde第216题
leetcode第216题题目描述找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。分析:其实可以看做一棵树,第一层是1-9,1下面的分支2-9,以此类推,k个树也就是看树的前k层,找和为n的,典型的深搜题对于每个数字来说有两种情况,要么选,要么不选,分别对选和不选进行深度优先搜索,直到找到k个数,判断这k个数的和是不是n即可class Solution {public: vector<vector<原创 2021-08-30 19:53:24 · 370 阅读 · 0 评论 -
0313super_ugly_number
0313超级丑数题目https://leetcode-cn.com/problems/super-ugly-number/方法一:最小堆class Solution {public: int nthSuperUglyNumber(int n, vector<int>& primes) { //使用优先队列来构建最小堆,依次取出最小堆的堆顶元素,取n次 priority_queue<long,vector<long>,gr原创 2021-08-09 10:11:42 · 75 阅读 · 0 评论 -
0831最大平均值和分组
0831最大平均值和分组题目我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。计算我们所能得到的最大分数是多少。注意我们必须使用 A 数组中的每一个数进行分组,并且分数不一定需要是整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-sum-of-averages著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。测试样例示例:输入:A = [9,1,2,原创 2021-07-31 00:17:56 · 114 阅读 · 0 评论 -
0583_Delete Operation for Two Strings
0583两个字符串的删除操作题目描述给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。示例输入: "sea", "eat"输出: 2解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"题解方法一:动态规划要求删除的做小步数可以转化为求最长的相同子序列,再用两个word的长度-相同子序列的两倍就求得了最小步数状态:dp[i][j]=以word1[0]-word2[i-1]原创 2021-07-30 23:05:59 · 110 阅读 · 0 评论 -
0583_Delete Operation for Two Strings
0583两个字符串的删除操作[动态规划][./src/tag/dp/README.md]题目描述给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。示例输入: "sea", "eat"输出: 2解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"题解方法一:动态规划c++class Solution {public: int minDistance(string wor原创 2021-07-30 20:28:03 · 66 阅读 · 0 评论 -
leetcode刷题笔记_线性动态规划1
线性动态规划1状态的推导是按照问题规模 i 从小到大依次推过去的,较大规模的问题的解依赖较小规模的问题的解。单串第一种是前面dp[i-1]是已知的,i 位置必须取 --比如前面提到的硬币题,就是考虑前k-1个硬币已经是最小了,只需要加入第k枚硬币就能求得最终的答案第二种是前面dp[i-1]已知,i 位置必须取。也就是考虑前面dp[i-1]的最优解+加入第i个数是否最优–比如前面提到的最长上升子序列,就是在已知的上升序列的最大值的基础上考虑是否加入第i个数题组1:最长上升序列T1:最长上升子序原创 2021-07-29 22:48:07 · 318 阅读 · 0 评论 -
leetcode刷题笔记_排序1
排序冒泡排序两两交换,依次把最大值移到最后面#include <iostream>#include <cstring>#include <vector>#include <map>#include <cmath>#include <set>using namespace std;void busort(vector<int>& arr){ for (int i = 0; i <原创 2021-07-27 22:51:14 · 298 阅读 · 0 评论 -
leetcode刷题笔记_哈希表2
哈希表2早上刚好连续几题都是beat100%碰巧云顶之奕又更新了,想着打两把放松一下,结果打了一下午愣是没赢过,晚上刷leetcode,最后一题愣是没写出来,心态有点小崩实际应用字母异位词分组给定一个字符串数组,将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词指字母相同,但排列不同的字符串。class Solution {public: vector<vector<string>> groupAnagrams(vector<string>原创 2021-07-23 21:59:13 · 282 阅读 · 0 评论 -
leetcode刷题笔记_哈希表1
哈希表设计哈希表设计哈希集合#define MAX_LEN 100000 // 初始化桶的数量class MyHashSet {private: vector<int> set[MAX_LEN]; // 使用数组实现哈希集合 /** 返回对应的桶的索引 */ int getIndex(int key) { return key % MAX_LEN; } /** 在特定的桶中搜索键,如果该原创 2021-07-22 22:56:09 · 181 阅读 · 0 评论 -
leetcode刷题笔记_树
树树的遍历前序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nul原创 2021-07-21 20:52:21 · 80 阅读 · 0 评论 -
leecode刷题笔记_栈和队列
栈和队列1队列先入先出的数据结构设计队列class MyCircularQueue {public: int *queue; int size; int maxSize; MyCircularQueue(int k) { size=0; maxSize=k; queue=new int[k]; } bool enQueue(int value) { if(size>=原创 2021-07-20 18:09:26 · 346 阅读 · 0 评论 -
leetcode刷题笔记_数组和字符串
数组和字符串数组简介寻找数组的中心索引给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetbook原创 2021-07-18 22:56:42 · 536 阅读 · 0 评论 -
链表leetcode刷题笔记
链表设计链表class Node {public: int val; Node* next; Node() { this->next = nullptr; }};class MyLinkedList {public: /** Initialize your data structure here. */ Node* head; int size; MyLinkedList() { h原创 2021-07-17 20:18:25 · 184 阅读 · 0 评论 -
630员工的重要性
630员工的重要性劳动节搞这种题一开就是故意的吧来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/employee-importance著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id 。比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。那么员工 1 的数原创 2021-05-01 12:44:51 · 136 阅读 · 0 评论