02 2022 档案
摘要:分析和思路: 先求出每个元素的最长的递增队列,再求每个元素最长的递减队列,再把每个元素的最长的递增和递减加一起最大值就是所需要求的值。记得是逆向覆盖。 1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 //https:/
阅读全文
摘要:1 #include<iostream> 2 #include<vector> 3 #include<math.h> 4 using namespace std; 5 vector<int> elsevec; 6 int n,m,sum3,sum5,dis0; 7 bool f(int i,int
阅读全文
摘要:分析和思路: 建立一个hash的表达式,如果那个重量能够称出来,就给它赋值1.然后把所有的砝码的重量进行累加,出现新的重量就赋值1,重复的也赋值1,在遍历整个v[i]=1的个数,就是能够称出的重量总数。 需要考虑一个问题,如何将已有的砝码总量都进行累加?如果有多少组,就需要列几个循环吗?10个组10
阅读全文
摘要:分析和思路:把附件1和附件2输入后,然后用“只买主件“、“ 只买主件+附件1“ ,“ 只买主件+附件2“、 “ 买主件+附件1+附件2“ ,实际归为了新的产品种类。然后建立状态转移方程即可。详细代码如下: //在状态转移时如何判断这个主件有几个附件?答案是不需要判断,直接用 if(j>=zj[i])
阅读全文
摘要:分析和思路: 这道题主要还是递归思想的理解和应用,还有就是在判断左右子树的的大小的时候,需要进行比较,返回较大值,这也属于递归的一部分,但是这个过程有点绕。递归思想在很多算法题里面有体现,需要深刻体会。 1 /* 2 struct TreeNode { 3 int val; 4 struct Tre
阅读全文
摘要:分析和思路: 1,首先栈的有一个元素 2,栈有了元素后就需要和pop里的元素去做对比,栈顶的元素和当前的pop队列第一个元素相等,就出栈,否则就不停的压栈。循环判断用的是pop和push的索引是否到了它们的最大值。 3,判断栈是否为空,如果为空就为真,否则为假。 1 bool IsPopOrder(
阅读全文
摘要:分析和思路:使用map保存每个节点的个数,大于1的个数链表不创建,其他的重新创建,这个方法的缺点是用了o(n)的空间。 1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x),
阅读全文
摘要:分析和思路: 把成绩保存到map或者vector中,然后进行排序。这道题关键是处理那个成绩相等时,排序后依然保持相对顺序不变的问题,费了好大的心思,发现效果依然不是自己想要的,写出的代码如下: 1 #include "iostream" 2 #include <vector> 3 #include
阅读全文
摘要:今天想操作一下vector对于pair元素的运用。感觉pair这个结构实际过程中还是蛮有用的 初看起来很简单,但是实际运用过程中却发现了一些问题。果然是应了那句话,书上得来终觉浅,绝知此事要躬行。比如那个sort(a,b,cmp);当我写成sort(a,b,cmp(xx,xx))的时候,程序报错了,
阅读全文
摘要:分析与思路: 直接从1到输入的整数之间进行遍历,把每个数从1到n/2之间进行整除。(因为每个数最大的除数不会超过自身的一半(其实还有更小的除数,就是平方根。后面会提及),然后将整除后的商与除数累积起来。判断是否等于自身即可。于是写出了以下代码: 1 #include <iostream> 2 #in
阅读全文
摘要:思路:直接把数据放到vector里,然后sort排序即可,还有注意c++的多组输入输出。没什么多说的,代码如下: 1 #include "iostream" 2 #include "vector" 3 #include "algorithm" 4 using namespace std; 5 int
阅读全文
摘要:思路:很自然的想到用map,利用map key-value 键值对的唯一性。遍历链表把每个元素保存到map里面,如果是重复的就不保存,同时就返回这个结果,就是想要的值。但是这样操作下来,空间复杂度是o(n),时间也是o(n),有没有更好的办法? 1 /* 2 struct ListNode { 3
阅读全文
摘要:1 #include "iostream" 2 #include "string" 3 using namespace std; 4 5 const int maxn = 90 + 5; 6 int dp[maxn]; 7 class Solution { 8 public: 9 /** 10 *
阅读全文
摘要:1 /** 2 * struct ListNode { 3 * int val; 4 * struct ListNode *next; 5 * ListNode(int x) : val(x), next(nullptr) {} 6 * }; 7 */ 8 class Solution { 9 pu
阅读全文
摘要:为啥这代码写的如此冗余 1 /* 2 struct RandomListNode { 3 int label; 4 struct RandomListNode *next, *random; 5 RandomListNode(int x) : 6 label(x), next(NULL), rand
阅读全文
摘要:getline分割字符串的原型说明: getline函数用于读取整行字符串。getline()的原型是istream& getline ( istream &is , string &str , char delim );参数解释:(1)istream &is 表示一个输入流,例如cin;(2)st
阅读全文
摘要:之前自己的解答: 1 #include "iostream" 2 using namespace std; 3 int main() 4 { 5 int a,b; 6 int n=0; 7 int sum=0; 8 while(cin>>n) 9 { 10 11 sum+=n; 12 } 13 co
阅读全文
摘要:考试过程中,遇到过这种情况,直接蒙了。 这是别人的代码 1 #include <iostream> 2 #include <sstream> 3 #include <string> 4 #include <vector> 5 #include <algorithm> 6 7 using namesp
阅读全文
摘要:分析:我的想法是用cin加循环来屏蔽掉输入过程中的空格,于是写出了以下代码: 1 #include "iostream" 2 #include <vector> 3 #include "algorithm" 4 using namespace std; 5 int main() 6 { 7 8 st
阅读全文
摘要:题目描述如下: 分析:之前做过这样的一道题,但是写得太繁琐,今天重新做了这道题。很明显的感觉做出来的效率提升了很多。 这道题的一个难点是,怎么样处理字符串长度大于8,截断后又大于8,又需要截断的情况。很显然,这种场景的处理逻辑应该要用到while循环。完整的代码如下: 1 #include <ios
阅读全文
摘要:分析和思路:双指针,第一个指针先遍历k个节点,然后第二个指针从头结点开始遍历,当第1个指针遍历到尾结点时,第二个指针所在的节点就是倒数第k个节点,注意呀考虑k超出个数大小情况。 1 /** 2 * struct ListNode { 3 * int val; 4 * struct ListNode
阅读全文

浙公网安备 33010602011771号