
模拟
csu_xiji
这个作者很懒,什么都没留下…
展开
-
力扣 29. 两数相除 位运算 模拟
https://leetcode-cn.com/problems/divide-two-integers/思路:很无聊的题目……商肯定可以用二进制表示,那么我们就可以模拟这个过程来求。class Solution {public: int divide(int dividend, int divisor) { if(dividend==INT_MIN&&divisor==-1) return INT_MAX; if(di原创 2021-10-13 01:01:33 · 143 阅读 · 0 评论 -
力扣 166. 分数到小数 模拟 哈希
https://leetcode-cn.com/problems/fraction-to-recurring-decimal/思路:模拟竖式除法即可,关键点在于如何区分有限小数和无限循环小数。其实就是看小数部分会不会出现循环节,在模拟的过程中,如果某个余数出现了多次,那么肯定就是无限循环小数喽。搞个哈希表记录一下位置即可。class Solution {public: using ll=long long; string fractionToDecimal(ll numerator,原创 2021-10-04 22:29:32 · 156 阅读 · 0 评论 -
力扣 5848. 树上的操作 dfs 模拟
https://leetcode-cn.com/problems/operations-on-tree/思路:无聊的模拟题。class LockingTree {public: LockingTree(vector<int>& vec) { parent=vec; int n=parent.size(); tree.resize(n); for(int i=1;i<n;i++)原创 2021-09-05 00:49:20 · 170 阅读 · 0 评论 -
力扣 1583. 统计不开心的朋友 模拟
https://leetcode-cn.com/problems/count-unhappy-friends/思路:无聊的模拟题。class Solution {public: int unhappyFriends(int n, vector<vector<int>>& preferences, vector<vector<int>>& pairs) { vector<vector<int>&g原创 2021-08-15 00:30:49 · 115 阅读 · 0 评论 -
力扣 1418. 点菜展示表 map 模拟
https://leetcode-cn.com/problems/display-table-of-food-orders-in-a-restaurant/思路:模拟就完事了。class Solution {public: vector<vector<string>> displayTable(vector<vector<string>>& orders) { // 桌号->(菜品名称->数量)原创 2021-07-06 01:27:26 · 116 阅读 · 0 评论 -
力扣 12. 整数转罗马数字 贪心 模拟
https://leetcode-cn.com/problems/integer-to-roman/思路:经典贪心问题——求解找零钱的最小张数——的变体。直接模拟即可……class Solution {public: string intToRoman(int num) { map<int,string> mp={ {1000,"M"}, {900,"CM"}, {500,"D"},原创 2021-05-14 00:49:37 · 163 阅读 · 0 评论 -
力扣 59. 螺旋矩阵 II 模拟 水
https://leetcode-cn.com/problems/spiral-matrix-ii/思路:昨天代码改一下就完事了。class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> ans(n,vector<int>(n)); int left=0,right=n-1,top=0原创 2021-03-16 16:25:41 · 120 阅读 · 0 评论 -
力扣 54. 螺旋矩阵 模拟
https://leetcode-cn.com/problems/spiral-matrix/思路:螺旋遍历,模拟这个过程即可。想象成一个四边形在逐渐缩小……class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { int top=0,down=matrix.size()-1,left=0,right=matrix[0].size()-原创 2021-03-15 15:25:11 · 108 阅读 · 0 评论 -
力扣 224. 基本计算器 模拟 栈
https://leetcode-cn.com/problems/basic-calculator/思路:好无聊的题目啊……注意细节就行了,可以直接上递归。class Solution {public: using pr=pair<int,int>; pr dfs(const string &s,int idx) { int n=s.size(),sum=0,tmp=0,sign=1; while(idx<n)原创 2021-03-10 00:48:58 · 186 阅读 · 0 评论 -
力扣 566. 重塑矩阵 模拟
https://leetcode-cn.com/problems/reshape-the-matrix/思路:简单模拟。class Solution {public: vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) { int n=nums.size(),m=nums[0].size(); if(r*c!原创 2021-02-18 00:58:52 · 118 阅读 · 0 评论 -
力扣 1410. HTML 实体解析器 string 模拟
https://leetcode-cn.com/problems/html-entity-parser/思路:mapmapmap存一下映射关系,然后遍历给定的字符串,遇到&\&&和;;;特殊处理即可。class Solution {public: string entityParser(string text) { map<string,string> m; m["""]="\""; m["&原创 2020-08-20 22:24:37 · 188 阅读 · 0 评论 -
力扣 150. 逆波兰表达式求值 栈
https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/思路:搞个栈模拟一下就行。遇到运算符弹出栈顶的两个数计算出结果再压进去即可。class Solution {public: int evalRPN(vector<string>& tokens) { stack<int> s; for(auto str:tokens){ if原创 2020-08-20 21:28:09 · 206 阅读 · 0 评论 -
力扣 394. 字符串解码 栈 模拟
https://leetcode-cn.com/problems/decode-string/思路:一个数字栈,一个字符串栈,遇到数字就计算出对应的数然后压倒数字栈中,遇到左括号,向字符串栈中压入一个空串表示进入了新的一层,遇到字符就将其加到字符串栈顶的后面,遇到右括号表明当前层终止了,弹出字符串栈顶和数字栈顶,计算出对应的字符串再加到字符串栈顶的后面即可(相当于加到了上一层的后面)。class Solution {public: string decodeString(string s)原创 2020-08-20 21:12:01 · 142 阅读 · 0 评论 -
力扣 1209. 删除字符串中的所有相邻重复项 II 栈 模拟
https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string-ii/思路:用栈模拟即可,加一个计数的提高效率。class Solution {public: string removeDuplicates(string s, int k) { string ans; if(k==1) return ans; using pr=pair&原创 2020-08-14 14:20:01 · 185 阅读 · 0 评论 -
力扣 103. 二叉树的锯齿形层次遍历 栈 模拟
https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/思路:搞两个栈模拟一下即可,具体看代码。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x),原创 2020-08-14 13:41:02 · 168 阅读 · 0 评论 -
力扣 1190. 反转每对括号间的子串 栈
https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses/思路:用栈来模拟,当遇到(((时,说明即将进入新的一层,所以需要将之前计算出的字符串curcurcur压入栈内,当遇到)))时,应当翻转当前的字符串curcurcur,然后弹出栈顶元素,把栈顶元素+翻转后的字符串当作curcurcur。class Solution {public: string reverseParenth原创 2020-08-14 00:19:21 · 242 阅读 · 0 评论 -
力扣 946. 验证栈序列 栈
https://leetcode-cn.com/problems/validate-stack-sequences/思路:建立一个辅助栈,无非以下几种情况:(1)pushedi=popedj(1)pushed_i=poped_j(1)pushedi=popedj,那么直接自增i、ji、ji、j即可,相当于进栈后立即出栈;(2)(2)(2)栈非空且栈顶元素等于popedjpoped_jpopedj,那么弹出栈顶元素即可;(3)i<pushed.size()(3)i<pushed.size原创 2020-08-12 23:29:34 · 248 阅读 · 0 评论 -
力扣 682. 棒球比赛 栈 模拟
https://leetcode-cn.com/problems/baseball-game/思路:用栈模拟即可。class Solution {public: int calPoints(vector<string>& ops) { vector<int> vec; int siz=ops.size(); int ans=0; for(int i=0;i<siz;i++){原创 2020-08-11 20:05:45 · 342 阅读 · 1 评论 -
力扣 1381. 设计一个支持增量操作的栈 数组模拟栈
https://leetcode-cn.com/problems/design-a-stack-with-increment-operation/思路:栈的大小在一开始就固定了,所以用数组模拟就行了。class CustomStack {public: CustomStack(int maxSize):arr(new int[maxSize]),siz(0),maxSize(maxSize){ } void push(int x) {原创 2020-08-11 19:25:46 · 182 阅读 · 0 评论 -
力扣 剑指 Offer 09. 用两个栈实现队列 模拟
https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/思路:两个栈,一个进,一个出,出的没有元素就把进的都放到出的里面。用两个队列模拟栈同理…class CQueue {public: CQueue() { } void appendTail(int value) { s1.push(value); } int deleteHea原创 2020-08-11 13:33:03 · 144 阅读 · 0 评论 -
力扣 1021. 删除最外层的括号 栈 模拟
https://leetcode-cn.com/problems/remove-outermost-parentheses/思路:用一个数即可模拟栈,遇到(((就自增,遇到)))就自减,当这个数为000时,这个位置的括号就要删去。class Solution {public: string removeOuterParentheses(string S) { int val=0; string ans; int siz=S.size();原创 2020-08-11 13:26:35 · 155 阅读 · 0 评论 -
力扣 622. 设计循环队列 队列 模拟
https://leetcode-cn.com/problems/design-circular-queue/思路:和这个https://blog.youkuaiyun.com/xiji333/article/details/107916851差不多。class MyCircularQueue {public: /** Initialize your data structure here. Set the size of the queue to be k. */ MyCircularQueu原创 2020-08-10 17:12:13 · 198 阅读 · 0 评论 -
力扣 641. 设计循环双端队列 数组模拟循环双端队列
https://leetcode-cn.com/problems/design-circular-deque/思路:因为队列的容量在初始化之后就不会再改变了,所以可以用数组来模拟。front、rearfront、rearfront、rear分别代表队列的头部和尾部(rearrearrear实际上指向的队尾元素的下一个位置),初始时二者相等,为了将队列空与队列满的情况区分开来,我们需要额外花费111个元素的空间(这个空间是不放置任何元素的)。通过下标对sizesizesize取模这一操作即可实现循环位移。原创 2020-08-10 16:56:42 · 324 阅读 · 0 评论 -
力扣 61. 旋转链表 链表+模拟
https://leetcode-cn.com/problems/rotate-list/思路:其实就是把链表循环右移kkk步,首先计算出链表长度nnn,令k%=nk\%=nk%=n,然后找到倒数第kkk个链表作为头节点即可,那么需要把链表从k−1k-1k−1处断开,并把末尾连接到头部。注意特判kkk为000的情况。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode原创 2020-08-09 18:27:29 · 218 阅读 · 0 评论 -
力扣 面试题 02.05. 链表求和 链表+模拟
https://leetcode-cn.com/problems/sum-lists-lcci/思路:反向存放比较简单,模拟就行了。考虑进阶怎么做?(1)(1)(1)先翻转链表,再利用相同的办法处理;(2)(2)(2)利用栈。注意(1)(1)(1)会对原链表进行修改。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(i原创 2020-08-09 16:26:12 · 208 阅读 · 0 评论 -
力扣 面试题 02.06. 回文链表 链表 模拟
https://leetcode-cn.com/problems/palindrome-linked-list-lcci/思路:如果是O(n)O(n)O(n)的空间复杂度,那么很好写,存到数组中判断即可。我们考虑怎么做到O(1)O(1)O(1)的空间复杂度。可以利用快慢指针得到链表的中点,然后把前半部分翻转,再与后半部分...原创 2020-08-09 16:09:56 · 221 阅读 · 0 评论 -
力扣 82. 删除排序链表中的重复元素 II 链表 模拟
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/思路:注意看清题意,是删除所有含有重复数字的节点。那么当cur−>valcur->valcur−>val与nxt−>valnxt->valnxt−>val相等时,这两个节点都要删除,这意味着我们需要记录curcurcur的前驱preprepre。那么用这三个指针模拟一下就行了,注意细节即可。/** * Definition原创 2020-08-09 15:19:57 · 329 阅读 · 0 评论 -
力扣 92. 反转链表 II 链表 模拟
https://leetcode-cn.com/problems/reverse-linked-list-ii/思路:首先找到第m−1m-1m−1个节点设为preprepre,然后反转mmm到nnn的链表,假设第n+1n+1n+1个节点为curcurcur,由于pre−>nextpre->nextpre−>next最初指向第mmm个节点,且在反转过程中没有修改它的值,所以在反转结束后pre−>nextpre->nextpre−>next指向第nnn个节点,那么此时还需原创 2020-08-08 01:55:30 · 208 阅读 · 0 评论 -
力扣 83. 删除排序链表中的重复元素 链表+模拟
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/submissions/思路:简单模拟。比较当前节点curcurcur和下一节点nxtnxtnxt的值,再做删除或移动操作即可。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int原创 2020-08-06 21:00:57 · 132 阅读 · 0 评论 -
力扣 25. K 个一组翻转链表 链表+模拟
https://leetcode-cn.com/problems/reverse-nodes-in-k-group/思路:没啥好办法,只能模拟了。kkk个节点kkk个节点的翻转即可,注意一下细节问题。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }原创 2020-08-06 20:52:48 · 211 阅读 · 0 评论 -
力扣 面试题67. 把字符串转换成整数 模拟
https://leetcode-cn.com/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/思路:模拟。class Solution {public: using ll=long long; int strToInt(string s) { int i=0,len=s.size(); ...原创 2020-04-22 19:13:26 · 175 阅读 · 0 评论 -
codeforces 1301D Time to Run 思维+模拟
https://vjudge.net/problem/CodeForces-1301D题目大意:给一张n∗mn*mn∗m的图,具体长啥样见题目。小明从左上角出发,在每条边仅能经过111次的情况下问小明能否恰好经过kkk条边,若可以输出小明的运动轨迹。思路:小明按照以下方式即可走遍所有的边:(1)向右走到最后一列。(2)向左走到第一列。(3)走到下一行。(4)向右走到最后一列。(5)向...原创 2020-02-14 17:48:15 · 335 阅读 · 0 评论 -
codeforces 1303C Perfect Keyboard 模拟+构造
https://vjudge.net/problem/CodeForces-1303C题目大意:给出一个字符串sss,保证sss中任意两个相邻的字符不相等,你需要输出一个包含所有小写字母且每个字母仅出现111次的字符串ttt,使得sss中任意相邻的两个字符在ttt中也是相邻的,如果构造不出这样的ttt则输出NONONO。思路:我是直接模拟了。思路比较简单,就是用数组模拟一个双端队列,对于当前位...原创 2020-02-13 15:18:27 · 459 阅读 · 0 评论 -
codeforces 1291B Array Sharpening 贪心
https://vjudge.net/problem/CodeForces-1291B题目大意:给一个数组,0<=ai<=1090<=a_i<=10^90<=ai<=109,你可以对任意ai>0a_i>0ai>0使得ai=ai−1a_i=a_i-1ai=ai−1。问经过若干次操作后,能否找到一个k(1<=k<=n)k(1&...原创 2020-02-08 14:39:06 · 230 阅读 · 0 评论 -
codeforces 1291A Even But Not Even 模拟
https://vjudge.net/problem/CodeForces-1291A题目大意:给一个仅由数字构成的字符串,你可以删除任意个字符,问是否可以使这个数字为奇数且这个数字的各位之和位偶数。思路:简单模拟,从最后一位向前删减直到最后一位为奇数,然后计算各位sumsumsum,若sumsumsum为偶数还需要判断奇数个数是否>=2>=2>=2。#include<...原创 2020-02-08 14:20:58 · 269 阅读 · 0 评论 -
codeforces 1296B Food Buying 简单贪心+模拟
https://vjudge.net/problem/CodeForces-1296B题目大意:给111个数sss,小明每次可以选择花费xxx元(x<=s)(x<=s)(x<=s)去买食物,同时他会获得x/10x/10x/10(向下取整)元,问小明最多可以花掉多少钱。思路:简单贪心,因为向下取整的原因,自然每次花费10的倍数是最赚的,那么模拟这个过程就行了。#include...原创 2020-02-06 15:44:37 · 481 阅读 · 2 评论 -
洛谷 P1015 回文数 模拟
https://www.luogu.org/problem/P1015题目描述若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。例如:给定一个十进制数5656,将5656加6565(即把5656从右向左读),得到121121是一个回文数。又如:对于十进制数8787:STEP1:8787+7878 = 165165STEP2:165165+561561 = 72...原创 2019-11-13 17:26:15 · 185 阅读 · 0 评论 -
codeforces 1250A Berstagram 模拟
http://codeforces.com/problemset/problem/1250/APolycarp recently signed up to a new social network Berstagram. He immediately published n posts there. He assigned numbers from 1 to n to all posts and...原创 2019-11-03 13:41:52 · 515 阅读 · 0 评论 -
洛谷 P2278 操作系统 优先队列+模拟
https://www.luogu.org/problem/P2278题目描述写一个程序来模拟操作系统的进程调度。假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的。其中运行优先级用自然数表示,数字越大,则优先级越高。如果一个进程到达的时候CPU是空闲的,则它会一直占用CPU直到该进程结束。除非在这个过程中,有一个比它优先级高的进程要运行。在这种情况下,这个新的(...原创 2019-10-20 02:13:12 · 450 阅读 · 0 评论 -
HDU 2005 第几天 模拟 水
http://acm.hdu.edu.cn/showproblem.php?pid=2005给定一个日期,输出这个日期是该年的第几天。Input输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。Output对于每组输入数据,输出一行,表示该日期是该年的第几天。Sample Input...原创 2019-01-27 22:15:56 · 102 阅读 · 0 评论