随笔分类 - 《剑指offer》
摘要:class Solution { public: int getMissingNumber(vector<int>& nums) { if(!nums.size()) return 0; int l=0,r=nums.size()-1; while(l<r)//找到第一个满足nums[i]=i+1的
阅读全文
摘要:class Solution { public: //二分找出k第一次,最后一个k后面的下标,相减就是答案 int getNumberOfK(vector<int>& nums , int k) { int n=nums.size(); if(!n) return 0; //找到第一个≥k的下标 i
阅读全文
摘要:使用空间存储节点的解法 class Solution { public: set<ListNode*> s; ListNode *findFirstCommonNode(ListNode *headA, ListNode *headB) { for (auto i = headA; i ; i=i-
阅读全文
摘要:class Solution{ public: string str; int i=0; int cnt[256]={0}; //Insert one char from stringstream void insert(char c){ str+=c; cnt[c]++; } //return t
阅读全文
摘要:class Solution { public: int longestSubstringWithoutDuplication(string s) { int len=0,n=s.size(),cnt[30]; memset(cnt,0,sizeof cnt); for (int i = 0,j =
阅读全文
摘要:class Solution { public: bool check(char a,char b) { int num=(a-'0')*10+(b-'0'); if(num>=10&&num<=25) return true; return false; } int getTranslationC
阅读全文
摘要:class Solution { public: int res; priority_queue<int,vector<int>,greater<int>> minheap; unordered_set<int> s;//所有出现过的丑数放在集合中 int getUglyNumber(int n)
阅读全文
摘要:class Solution { public: int getMaxValue(vector<vector<int>>& grid) { int n=grid.size(),m=grid[0].size(); vector<vector<int>> f(n,vector<int> (m,0));/
阅读全文
摘要:class Solution { public: static bool cmp(int a,int b) { string as=to_string(a),bs=to_string(b); return as+bs<bs+as; } string printMinNumber(vector<int
阅读全文
摘要:class Solution { public: int digitAtIndex(int n) { if(!n) return 0; long long start=1,len=1,cnt=1;//记录区间的起始位置,记录区间长度,cnt记录当前是几位数 //往后走,跨度为一个区间 while(1
阅读全文
摘要:class Solution { public: int numberOf1Between1AndN_Solution(int n) { vector<int> q; do { q.push_back(n%10); n/=10; }while(n); int res=0; for (int i =
阅读全文
摘要:class Solution { public: int maxSubArray(vector<int>& nums) { int n=nums.size(),res=-0x3f3f3f3f; for (int i = 0; i < n;)//枚举以i为起点的区间 { int j=i,sum=0;
阅读全文
摘要:class Solution { public: priority_queue<int> max_heap; priority_queue<int,vector<int>,greater<int>> min_heap; void insert(int num){ max_heap.push(num)
阅读全文
摘要:class Solution { public: vector<vector<int>> res; vector<int> path; bool st[10]; void dfs(vector<int>& nums,int u) { int n=nums.size(); if(u==n) { res
阅读全文
摘要:class Solution { public: int moreThanHalfNum_Solution(vector<int>& nums) { int cnt=0,val=-1;//val给一个无效值即可 for(auto x:nums) { if(!cnt)//投票最多人没了,接下来任何人都
阅读全文
摘要:class Solution { public: TreeNode* pre=NULL; void dfs(TreeNode* root) { if(!root) return; dfs(root->left); root->left=pre; if(pre) pre->right=root; pr
阅读全文
摘要:暴力做法 时间复杂度 O (n^2) 遍历一遍,复制 next 指针,新建链表 遍历第二遍,复制 random 指针,查找每一个 random 节点的位置 class Solution { public: ListNode *copyRandomList(ListNode *head) { List
阅读全文
摘要:class Solution { public: vector<vector<int>> res; vector<int> path; void dfs(TreeNode* root, int sum,int t) { t+=root->val; path.push_back(root->val);
阅读全文
摘要:class Solution { public: bool dfs(vector<int> q,int l,int r) { if(l>=r) return true; int root=q[r]; int idx=l; for (; idx < r; idx ++ ) if(q[idx]>root
阅读全文
摘要:class Solution { public: vector<vector<int>> res; void bfs(TreeNode* root) { queue<TreeNode*> q; q.push(root); int level=0; while(q.size ()) { int siz
阅读全文