自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 leetcode 416 分割等和子串

class Solution {public: bool canPartition(vector<int>& nums) { //因为题目要求时分割成两个子集,并且两个子集的和相等 int sum=0; vector<int>dp(10001,0);//dp[i]表示容量为i,最大可以凑成i的子集之和为dp[i] for(int i=0;i< nums.size(); i++){ .

2022-05-11 14:29:30 370

原创 leetcode 1049 最后一块石头的重量2

class Solution {public: int lastStoneWeightII(vector<int>& stones) { int sum =0; vector<int>dp(15001,0);//因为最大可装30000,让两石头相撞取一半,我是这么理解的 for(int i=0; i<stones.size(); i++){ sum+=stones[i]; .

2022-05-11 14:28:55 245

原创 leetcode 494 目标和

class Solution {public: int findTargetSumWays(vector<int>& nums, int S) { int sum = 0; for (int i = 0; i < nums.size(); i++) sum += nums[i]; if (abs(S) > sum) return 0; // 此时没有方案 if ((S + sum) % 2 == 1).

2022-05-11 14:28:23 203

原创 leetcdoe 56 合并区间

class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { //这题跟那个射气球的很像,就是重复区间的处理 //定义结果数组 vector<vector<int>>result; if(intervals.size()==0)return resu.

2022-05-06 15:58:40 177

原创 leetcode738 单调递增的数字

class Solution {public: int monotoneIncreasingDigits(int n) { //首先明白我们得到的结果要是单调递增的 //我们需要先将这个数转字符串 string str=to_string(n); int flag=str.size();//用来标记赋值九从哪里开始 for(int i=str.size()-1;i>0;i--){ if(.

2022-05-06 15:58:10 175

原创 leetcode 714 买卖骨牌哦的最佳时机含手续费

class Solution {public: int maxProfit(vector<int>& prices, int fee) { int result=0; int minprice=prices[0]; for(int i=1;i<prices.size();i++){ //如果还有更低点,记录下来 if(prices[i]<minprice)minpric.

2022-05-06 15:57:32 89

原创 leetcode 968 监控二叉树

/** * 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(nullptr) {} *.

2022-05-06 15:56:40 512

原创 leetcode1005 k次取反后最大化的数组和

class Solution { private: static bool cmp(int a,int b){ return abs(a)>abs(b); }public: int largestSumAfterKNegations(vector<int>& nums, int k) { //求最大数组和,那我们第一肯定想用贪心 //我们知道负数肯定会拉低整个数组和的大小,所以我们需要通过绝对值来排.

2022-05-04 14:12:24 275

原创 leetcode 134 加油站

/方法1​// class Solution {// public:// int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {// //暴力解法,时间复杂度n^2 超时// //思路:遍历每一个点,跑一圈,如果油量>=0,这个加油站可行// for(int i=0;i<gas.size();i++){//

2022-05-04 14:11:40 301

原创 leetcode135 分发糖果

class Solution {public: int candy(vector<int>& ratings) { //这题比较难,因为它需要考虑两边,比如说凹的形式,左右边高的情况,所以我们需要两边遍历 vector<int>CandtVce(ratings.size(),1); //从左到右,给大的加1 for(int i=1;i<ratings.size();i++){ .

2022-05-04 14:10:09 137

原创 leetcode860 柠檬水找零

class Solution {public: bool lemonadeChange(vector<int>& bills) { //只有5,10,20的情况 //5快直接收下,10快找5快,10快+1,20快找10快+5快或者3张5快 int five=0,ten=0,twenty=0; for(int bill:bills){ if(bill==5)five++; .

2022-05-04 14:09:32 239

原创 leetcode 最大子数组和

class Solution {public: int maxSubArray(vector<int>& nums) { int result=INT_MIN; int count=0; for(int i=0;i<nums.size();i++){ count+=nums[i]; if(count>result){ result=cou.

2022-05-03 14:38:12 199

原创 leetcode 买卖股票

class Solution {public: int maxProfit(vector<int>& prices) { //因为第一天的利润要到第二天才知道,所以我们的利润区间比价格区间少一个 //这道题,也需要常识,我们知道股票亏钱了绝对不能卖,那我们计算最大利润,把正的家加起来不就好了 int result=0; for(int i=1;i<prices.size();i++){ .

2022-05-03 14:37:35 166

原创 leetcode 跳跃游戏

class Solution {public: bool canJump(vector<int>& nums) { //我们只需要关心能跳跃的最大范围是否能到达终点即可,不管是等于还是超过覆盖,都相当于可以到达 //所以我们只要求最大的跳跃距离能不能到终点 int cover=0; if(nums.size()==1)return true;//等于1怎么跳都行 for(int i=0;i<.

2022-05-03 14:36:57 1054

原创 leetcode 跳跃游戏2

class Solution {public: int jump(vector<int>& nums) { if(nums.size()==1)return 0; int curindex=0; int nextindex=0; int ans=0; for(int i=0;i<nums.size();i++){ nextindex=max(i+nums[i],nex.

2022-05-03 14:35:35 1051

原创 455 分发饼干

class Solution {public: int findContentChildren(vector<int>& g, vector<int>& s) { //使用贪心法,我们知道这道题目的目的是尽可能满足孩子,也就是求的是可以满足孩子的最大数量 //我们这道题贪在哪呢?贪在饼干的满足度大的可以喂饱胃口小的或者干干好的,那么我们当然要京可能用这些满足度大的饼干来满足胃口大的孩子 //先排序 .

2022-05-02 14:57:28 254

原创 leetcode377 摆动序列

class Solution {public: int wiggleMaxLength(vector<int>& nums) { //把这个问题看作是一个折线图,我们可以很清楚的看出他们的幅度 //摆动序列这一题要求,一正一负排下去,如果画出来的折线图是单调递增或递减,那么这中间肯定是有不符合要求的 if(nums.size()<=1)return nums.size(); int curDiff=0;...

2022-05-02 14:56:47 292

原创 kmp算法的理解

其实我感觉kmp算法就是bf算法的改进升级,区别在于遇到不同时,不需要回溯到子串的头那里,kmp算法需要构建一个next数组,记录最长相等前后缀。class Solution {public: void getnext(int*next,const string s) { int j=0; next[0]=0; for(int i=1;i<s.size();++i) { if(j>

2022-04-12 14:47:25 132

原创 leetcode 左旋转字符串

class Solution {public: string reverseLeftWords(string s, int n) { //翻转前k个字符,翻转k到末尾的字符,然后整体翻转 reverse(s.begin(),s.begin()+n); reverse(s.begin()+n,s.end()); reverse(s.begin(),s.end()); return s; }};...

2022-04-12 13:44:30 131

原创 leetcode806 写字符串需要的行数

const int MAXWITH=100;class Solution {public: vector<int> numberOfLines(vector<int>& widths, string s) { //直接遍历 int line=1;//从第一行开始 int width=0;//记录需要的宽度,widths是a到z需要的单位 for(auto&c:s) { .

2022-04-12 13:36:58 228

原创 leetcode 151 颠倒字符串中的单词

我这里分为3个步骤:去除多余空格 翻转字符串 使用指针截出每一个单词的长度,在翻转回来 class Solution {public: void reverse(string&s,int start,int end) { for(int i=start,j=end;i<j;++i,--j) swap(s[i],s[j]); } //去除空格,用双指针 void removespace(string&s)

2022-04-11 14:58:54 173

原创 leetcode 键指offer 05 替换空格

class Solution {public: string replaceSpace(string s) { //首先我们需要知道s串中有多少空格,扩充数组 int count=0; int oldsize=s.size(); //遍历字符串,计算空格 for(int i=0;i<s.size();++i) { if(s[i]==' ') cou.

2022-04-11 14:13:12 112

原创 leetcode804 唯一的摩斯密码词

const static string mosi[]={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};//思路:这里使用unordered_set是为了排除相同,我们将翻译好的摩斯密码放入set,不同单词翻译数量就是set的大小.

2022-04-10 17:24:00 311

原创 leetcode 344 反转字符串1and2

class Solution {public: void reverseString(vector<char>& s) { for(int i=0,j=s.size()-1;i<s.size()/2;++i,--j) { swap(s[i],s[j]); } }};class Solution {public: string reverseStr(string s, int.

2022-04-09 14:56:13 302

原创 leetcode 15 三数之和

class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { //哈希表是真看不到怎么做,个人觉得双指针好理解 vector<vector<int>>result; //排序 sort(nums.begin(),nums.end()); for(int i=0;i&.

2022-04-09 13:36:12 179

原创 二叉树层序遍历

我这个小垃圾,按照模板做,感觉真不错 举一反三,天天都有着感觉就好,随缘刷题,哪天想起就哪天刷,真的太容易忘记了。leetcode 102 二叉树的层序遍历class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { queue<TreeNode*>que; if(root!=nullptr) que.push(ro...

2022-04-08 14:50:04 1249

原创 leetcode454

class Solution {public: int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) { unordered_map<int,int>unmap;//key计算和,value统计和的次数 for(auto a:A) { .

2022-04-06 13:39:49 135

原创 leetcode762

不看题解真不知道还有__builtin_popcount(i)这个内建函数,他的作用我理解的是:将参数展开成二进制,这个函数会自动统计这个二进制中的1的个数。然后按照题目,计算出这个数后,我们在判断这个数是不是质数即可,是的话自增。class Solution {public: bool isprim(int x)//筛选质数 { //质数:除了1和他本身 if(x<2) { return false;

2022-04-05 14:57:15 734

原创 leetcode 744

class Solution {public: char nextGreatestLetter(vector<char>& letters, char target) { //线性查找 for(int l:letters) { if(l>target) { return l; } } re.

2022-04-03 09:34:44 57

原创 leetcode 202 快乐数

class Solution {public: int ishappysum(int n) { //将n分解,用sum记录 int sum=0; while(n) { sum+=(n%10)*(n%10); n/=10; } return sum; } bool isHappy(int n) { //因为会重复所有.

2022-04-01 12:59:14 99

原创 leetcode 349

class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { unordered_set<int>result_set;//无序set,但是值是唯一的,而且底层是hash unordered_set<int>num_set(nums1.begin(),nums1.end(.

2022-04-01 11:59:40 884

原创 leetcode 2038

class Solution {public: bool winnerOfGame(string colors) { //连续三个才可以删除,那我们遍历一遍 int sum=0; int len=colors.size()-1; for(int i=1;i<len;++i) { //要看谁赢我们子需要知道他们互减后是真还是假 if(colors[i-1]=='A'.

2022-03-22 13:21:25 96

原创 leetcode 383

小菜鸡一枚​bool canConstruct(char * ransomNote, char * magazine){ //因为要求ransomNode是magazine的子串吧(我说是这么理解的) int lenr=strlen(ransomNote),lenm=strlen(magazine); if(lenr>lenm)//所以lenr不能比lenm大 { return false; } int recordm[26]={

2022-03-05 14:40:06 136

原创 leetcode 242

int cmp(const void*a,const void*b){ char a1=*(char*)a,b1=*(char*)b; return a1-b1;}bool isAnagram(char * s, char * t){ //因为是异位词,所以排好序应该是一致的 //如果长度不一,说明这两个字符串不是异位词 int lens=strlen(s),lent=strlen(t); if(lens!=lent) { re.

2022-03-05 14:14:14 56

原创 leetcode 2104

#define max(x,y) (x)>(y)?(x):(y)#define min(x,y) (x)<(y)?(x):(y)long long subArrayRanges(int* nums, int numsSize){ long long sum=0; for(int i=0;i<numsSize;++i) { int indexx=INT_MIN,indexi=INT_MAX; for(int j=i;j<nu.

2022-03-04 14:57:49 134

原创 leetcode142

/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode *detectCycle(struct ListNode *head) { //使用快慢指针可以解决 struct ListNode*fast=head; struct ListNode*slow=head; .

2022-03-03 14:21:31 50

原创 leetcode 链表相交

参考了,下面这是作者,我是参考的作者:hs-zhangsan链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci/solution/mian-shi-ti-0207lian-biao-xiang-jiao-by-0dz05/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。struct ListNode *getIntersectionNode(s

2022-03-03 13:46:47 142

原创 leetcode 19

/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ //参考代码随想录 //双指针+虚拟头节点 struct ListNode*dummyHead=(struct L.

2022-03-03 12:49:04 238

原创 leetcode 206反转链表

/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head){ struct ListNode*temp;//保存cur下一个位置 struct ListNode*cur=head; struct Li.

2022-03-02 13:28:13 128

原创 leetcode 707设计链表

typedef struct myListNode{ int elem; //数据域 struct myListNode* next; //指针域}myListNode;typedef struct MyLinkedListTag{ int val; int count; struct myListNode* head;} MyLinkedList;MyLinkedList* myLinke.

2022-03-02 12:55:44 203

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除