工科扫地僧
这个作者很懒,什么都没留下…
展开
-
有了这份leetcode刷题归纳总结对比套路,再也不用担心秋招笔试面试的算法题,
leetcode刷题之二叉树与递归leetcode刷题之栈、队列、优先队列leetcode刷题之两类查找问题leedcode算法刷题之利用普通排序算法思路leetcode刷题之数组的双指针、对撞指针法、滑动窗口...原创 2020-05-07 16:10:56 · 895 阅读 · 0 评论 -
牛客网刷题出现错误总结
在本地IDE上调节没有问题,但是在牛客网不行,后来查看得知,牛客网只提取第一次输出,之前为了调试代码,我的代码当中有三个输出,所以一直牛客网提交不通过...原创 2020-04-12 19:29:59 · 3650 阅读 · 0 评论 -
时间复杂度
时间复杂度原创 2022-04-12 10:21:36 · 265 阅读 · 0 评论 -
9. 回文数
class Solution {public: bool isPalindrome(int x) { string record=to_string(x); int size=record.size(); int L=0,R=size-1; for(int i=0;i<size/2;i++) { if(L<=R && record[L]!=record[...原创 2021-03-24 18:26:04 · 162 阅读 · 0 评论 -
1438. 绝对差不超过限制的最长连续子数组
class Solution {public: int longestSubarray(vector<int>& nums, int limit) { int n=nums.size(); int right=0,left=0; //可重复有序set ,底层是红黑树 multiset<int>s; int ret=0; while(right<n) ...原创 2021-02-21 14:06:04 · 161 阅读 · 0 评论 -
进制转换总结
可以将[0,10]和16进制的字符串,转化成十进制,,其中如果是十六进制,需将0x去除,如果是其他进制,不包括负数还可以将十进制字符串转化成整型int shift(int R,string str){ int res=0; for(int i=0;i<str.size();i++) { if(R==16) { if(str[i]>='A') res=res*R+(str[i原创 2020-09-07 13:16:00 · 231 阅读 · 0 评论 -
202. 快乐数
参考链接:https://leetcode-cn.com/problems/happy-number/solution/kuai-le-shu-by-leetcode-solution/class Solution {public: bool isHappy(int n) { int ans=0; //如果不为1,则会进入到一个无限循环中去, set<int>record; while(1...原创 2020-09-02 11:51:45 · 142 阅读 · 0 评论 -
204. 计数质数
参考链接:https://leetcode-cn.com/problems/count-primes/solution/ru-he-gao-xiao-pan-ding-shai-xuan-su-shu-by-labula/class Solution {public: //判断是否是一个素数/质数 bool helper(int n) { for(int j=2;j<=sqrt(n);j++) { ...原创 2020-09-02 11:19:19 · 140 阅读 · 0 评论 -
93. 复原IP地址
class Solution {public: bool IS_True(string str) { int n=str.size(); int a=atoi(str.c_str()); if(a>=0&&a<=255) { string tmp=to_string(a); if(n==tmp.size()) ...原创 2020-08-31 17:31:30 · 249 阅读 · 0 评论 -
148 排序链表
class Solution {public: ListNode* sortList(ListNode* head) { quickSort(head, nullptr); return head; } void quickSort(ListNode* head, ListNode* tail) { if (head == tail || head->next == nullptr) { return; } ListNode* mid = p...原创 2020-08-31 11:37:58 · 206 阅读 · 0 评论 -
371. 两整数之和
class Solution {public: int getSum(int a, int b) { while(b){ int carry = unsigned(a&b) << 1; a ^= b; b = carry; } return a; }};原创 2020-08-03 15:06:51 · 149 阅读 · 0 评论 -
二叉搜索树与双向循环链表
类似题:二叉搜索树与双向链表/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; Node() {} Node(int _val) { val = _val; left = NULL; right = NULL; } Node(int _val, Node* _le..原创 2020-07-29 21:52:06 · 166 阅读 · 0 评论 -
一个基本的回溯及其演变
void backtrace(vector<int>&record, vector<vector<int>>&res, int index, vector<int>path){ if (path.size() == 2) { res.push_back(path); return; } for (int i = index; i < record.size(); i++) { path.push_back(...原创 2020-07-22 18:06:55 · 154 阅读 · 0 评论 -
图、构建邻接表图,深度遍历求路径,广度遍历求路径、求连通量、求最短路径
#include<iostream>#include<vector>#include<stack>#include<algorithm>using namespace std;class SparseGraph {private: int n, m; vector<vector<int> >g; int *from; bool *visited;public: SparseGraph(int ...原创 2020-07-22 11:42:08 · 215 阅读 · 0 评论 -
python刷题的输入输出
多组输入:一行多个值输入:[a, b] = list(map(int, input().split()))print(a)print(b)多行多值输入原创 2020-07-21 18:23:11 · 1109 阅读 · 0 评论 -
36. 有效的数独
class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { //标识所在行 ,所在列, 所在子宫格,是否出现过该数字,10 是为了方便标识数字9,其中0不标识任何字母 vector<vector<bool>>row(9,vector<bool>(10,0)); vector<v...原创 2020-07-21 10:39:14 · 169 阅读 · 0 评论 -
189. 旋转数组
class Solution {public: void rotate(vector<int>& nums, int k) { int n=nums.size(); //防止k>n,所以直接取余 k%=n; //记录交换次数,直到等于n-1为止,交换n次, int count=0; //start 此次连续替换的起点,因为当n%k==0,时,会在替换没结束之间,回...原创 2020-07-21 09:44:19 · 129 阅读 · 0 评论 -
169. 多数元素
mapclass Solution {public: int majorityElement(vector<int>& nums) { unordered_map<int,int>record; for(int a:nums) record[a]++; for(auto b:record) { if(b.second>nums.si...原创 2020-07-20 21:32:43 · 151 阅读 · 0 评论 -
73. 矩阵置零
class Solution {public: void setZeroes(vector<vector<int>>& matrix) { //第一行是否要全为零 bool firstrow=false; //第二行是否要全为零 bool firstcol=false; //行数 int rows=matrix.size(); //列数 ...原创 2020-07-20 20:42:12 · 150 阅读 · 0 评论 -
55. 跳跃游戏
class Solution {public: bool canJump(vector<int>& nums) { int n=nums.size(); int max_length=0; for(int i=0;i<n;i++) { //只有max_length大于等于当前的的台阶,才能进入 //即只有有可能到达i台阶,才有可能往前跳 ...原创 2020-07-20 15:27:36 · 134 阅读 · 0 评论 -
127. 单词接龙
class Solution {public:int ladderLength(string beginWord, string endWord, vector<string>& wordList) { //用hashset存储wordlist unordered_set<string>wordset(wordList.begin(),wordList.end()); //如果单词列表为空,或者单词列表中不包含endword ,返回...原创 2020-07-20 11:25:55 · 144 阅读 · 0 评论 -
38. 外观数列
class Solution { //判断str的外观数列 string juge(string str) { string res; int count=1; //str="1"时,是进不了循环的 for(int i=1;i<str.size();i++) { if(str[i]==str[i-1]) { ...原创 2020-07-19 10:06:27 · 145 阅读 · 0 评论 -
62. 不同路径
动态规划class Solution { public: int uniquePaths(int m, int n) { if(m==0||n==0)return 1; if(m==0&&n==0)return 0; //用二维数组存储到达某点的路径数 //初始化为1,因为第一行,第一列默认就是1,这样省区赋值了 vector<vector<int&g...原创 2020-07-19 09:28:10 · 139 阅读 · 0 评论 -
162. 寻找峰值
class Solution {public: int findPeakElement(vector<int>& nums) { //二分查找法 int L=0,R=nums.size()-1; while(L<R)//在L=R时,跳出 { int mid=L+(R-L)/2; //判断是在上坡,还是在下坡 if(nums[...原创 2020-07-18 19:57:31 · 151 阅读 · 0 评论 -
105. 从前序与中序遍历序列构造二叉树
class Solution {private: unordered_map<int, int> index;public: TreeNode* myBuildTree(const vector<int>& preorder, const vector<int>& inorder, int preorder_left, int preorder_right, int inorder_left, int ino...原创 2020-07-18 15:42:14 · 210 阅读 · 0 评论 -
234、回文链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool isPalindrome(ListNode* head) { //头节点为空或者为1 都返回为真...原创 2020-07-18 15:09:29 · 143 阅读 · 0 评论 -
56. 合并区间
class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { vector<vector<int>>res; if(intervals.size()==0)return res; map<int,int>record; //给出...原创 2020-07-18 11:24:08 · 153 阅读 · 0 评论 -
面试题---求和
#include<iostream>#include<vector>using namespace std;void helper(vector<int>&res,int index,int N,int M){ if(M==0) { for(int j=0;j<res.size();j++) { j==0?cout<<res[0]:cout<...原创 2020-07-17 20:45:39 · 161 阅读 · 0 评论 -
leetcode 刷题之链表问题
小米笔试----找出单向链表中的一个节点,该节点到尾指针的距离为K24. 两两交换链表中的节点142. 环形链表 II206,反转链表328. 奇偶链表141. 环形链表92. 反转链表 II二叉搜索树与双向链表复制带随机指针的链表237. 删除链表中的节点19. 删除链表的倒数第N个节点21. 合并两个有序链表114. 二叉树展开为链表876. 链表的中间结点83. 删除排序链表中的重复元素160. 相交链表(同剑指offer,两个链表的公共节点原创 2020-07-17 18:30:04 · 197 阅读 · 0 评论 -
134. 加油站
class Solution {public: int canCompleteCircuit(vector<int>& gas, vector<int>& cost) { //因为是环形的,所以rest的和只要不小于0,就一定有一个索引开始, //遍历一遍数组之后,发现最后开始run的为开始索引 int start=0,rest=0,run=0; for(int i=0;i<g...原创 2020-07-15 20:39:50 · 145 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
class Solution { //int get_Left_bound(vector<int>& nums, int target) //{ //}public: vector<int> searchRange(vector<int>& nums, int target) { int n=nums.size()-1; vector<int>res(2,-1);...原创 2020-07-10 13:31:11 · 216 阅读 · 0 评论 -
79. 单词搜索
class Solution { //以board[i][j]开始,是否找到从word[count]开始的字符串 bool help(vector<vector<char>>& board,string &word,int i,int j,int count) { if(board[i][j]!=word[count])return false; //此处,注意,左值要为变量不可word.size()...原创 2020-07-08 21:02:33 · 195 阅读 · 0 评论 -
172. 阶乘后的零
蠢方法,会越届class Solution {public: int trailingZeroes(int n) { long long record=1; int count=0; /*while(n--) { record*=n;//n最后一次进来循环是0,所以record,最后值为0 }*/ for(int i=n;i>0;i--)...原创 2020-07-07 22:02:26 · 223 阅读 · 0 评论 -
146. LRU缓存机制
/*采用哈希链表的方法,集合了哈希表的查找高效,和链表的删除插入高效的特点哈希表存储键值,和键值对应的双向链表的节点,链表中存储键值,和value值*///建立一个双向链表的节点struct listnode{ int val; int key; listnode *pre; listnode *next; listnode(int _key,int _val):key(_key),val(_val),pre(NULL),next(NULL)...原创 2020-07-05 23:26:28 · 162 阅读 · 0 评论 -
438. 找到字符串中所有字母异位词
class Solution {public: vector<int> findAnagrams(string s, string p) { vector<int>res; if(p.size()==0)return res; unordered_map<char,int>need,window; for(char c:p) need[c]++; ...原创 2020-07-03 00:17:47 · 178 阅读 · 0 评论 -
567. 字符串的排列
class Solution {public: bool checkInclusion(string s1, string s2) { unordered_map<char,int>need,window; for(char c:s1) need[c]++; int Left=0,Right=0; int valid=0; while(Right<s2....原创 2020-07-02 22:19:28 · 221 阅读 · 0 评论 -
螺旋矩阵 两道题
因为可能出现行和列的数值不一样,所以采用上下左右的标识遍历,且实时更新,判断是否已遍历完了class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int>res; if(matrix.size()==0)return res; int left=0,right=m...原创 2020-07-02 00:44:05 · 204 阅读 · 0 评论 -
76. 最小覆盖子串
class Solution {public: string minWindow(string s, string t) { //左闭右开区间,初始化中,没有元素 int left=0,right=0; unordered_map<char,int>window,need; int valid=0; //start 满足t在s中的条件的起点,len 满足条件的字符串长度 ...原创 2020-06-30 23:44:42 · 193 阅读 · 0 评论 -
876. 链表的中间结点
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* middleNode(ListNode* head) { ListNode *left=...原创 2020-06-29 19:41:54 · 165 阅读 · 0 评论 -
137. 只出现一次的数字 II
class Solution {public: int singleNumber(vector<int>& nums) { int res=0; for(int i=0;i<32;i++) { int sum=0;//记录二进制每一位上的1的个数 for(int j=0;j<nums.size();j++) { ...原创 2020-06-29 19:11:09 · 6428 阅读 · 0 评论