摘要: 每个节点的next只有一个 因为要反转。必定需要存储之前的节点。 而现在的节点要根据原来的next进行更新,因为now->next已经更新为前面的节点,所以要先存储之前的now->next ListNode* pre=nullptr;//每个链表结尾都要使用nullptr ListNode* now 阅读全文
posted @ 2023-07-12 16:17 iu本u 阅读(14) 评论(0) 推荐(0)
摘要: 思路:先将寄链表连接起来;再将偶链表连接起来;最后将寄链表和偶链表一起连起来。 首先需要一个指针结构体去记录下偶链表的表头。最后才能将两个链表连接起来。 ListNode* odd=head; LisrNode* even=head->next; ListNode* evenhead=head->n 阅读全文
posted @ 2023-07-11 15:37 iu本u 阅读(12) 评论(0) 推荐(0)
摘要: 遇见中间节点就删除这个节点 可以用快慢指针 ListNode*fast=head; ListNode*slow=head; LiseNose*pre; whie(fast&&fast->next){//在这里中间节点是向下取整,因此可能会跳过一个节点,所以两个判断条件 fast=fast->next 阅读全文
posted @ 2023-07-10 15:56 iu本u 阅读(27) 评论(0) 推荐(0)
摘要: 基本操作 入队: queue.push() queue.push_back()//两者效果相同 出队: queue.pop(); queue.pop_back();//都从尾部操作 考虑两个因素:1.每个参议员的决定都由之后的参议员决定 2.决定禁用之后都不能在投票 queue<int>radian 阅读全文
posted @ 2023-07-06 17:21 iu本u 阅读(25) 评论(0) 推荐(0)
摘要: 输入的时间是递增的 输出 的时[t-3000,t] queue <int>q; int ping(int t){ q.push(t); while(q.front<t-3000){ q,pop(); } return q.size(); } 阅读全文
posted @ 2023-07-03 13:55 iu本u 阅读(17) 评论(0) 推荐(0)
摘要: vector的基本操作: vector<int >v; v.back();//获取尾部数据 v.front();//获取首部数据 v.push_back(3);//在尾部加入数据3 v.pop_back();//弹出尾部数据 首先只有前一个行星向右走,后一个行星向左走才可能相撞。也就是一正一负的组合 阅读全文
posted @ 2023-06-15 16:50 iu本u 阅读(14) 评论(0) 推荐(0)
摘要: while(scan<s.size()){ if(s[scan]== '*'){ write==0?write:write--; scan++; continue; } s[write++]=s[scan++]; return s.substr(0,write); } 阅读全文
posted @ 2023-06-14 14:52 iu本u 阅读(10) 评论(0) 推荐(0)
摘要: c++栈初始化 stack<类型> s; 栈顶: s.top(); 出栈: s.pop(); 入栈: s.push(数据); 字符串操作: string::.substr(ops,nums):ops截取位置的开始;nums截取字符的个数 阅读全文
posted @ 2023-06-14 14:43 iu本u 阅读(18) 评论(0) 推荐(0)
摘要: map<vector<int>,int>cnt;//用于存储每个行向量出现的次数 for(auto row:grid){//直接遍历行向量 cnt[row]++; } for(int i=0;i<n;++i){ vector<int>arr; for(int j=0;j<n;++j){//存储列向量 阅读全文
posted @ 2023-06-02 21:51 iu本u 阅读(27) 评论(0) 推荐(0)
摘要: 对于二维vector有分外层和内层: 当初始化指定了外层大小(行数)时,添加元素写法: 错误写法:不能使用[] vector<vector<int>>v(3);//指定外层数目 for(int i=0;i<3;++i){ for(int j=0;j<n;++j){ v[i][j]=0; } } 正确 阅读全文
posted @ 2023-06-02 21:33 iu本u 阅读(20) 评论(0) 推荐(0)