- 博客(22)
- 收藏
- 关注
原创 六月集训第七天哈希表
使用正负号进行原地哈希。这个方法很妙题解中还有交换的方式https://leetcode.cn/problems/find-all-duplicates-in-an-array/solution/2068本来开两个hash做差的,后来发现,其实一个就够了。但是lc很离谱,一个的内存比两个还多。...
2022-06-07 23:49:48
171
1
原创 五月集训,day16 不会做了,做别的去
day20BSTstruct TreeNode* searchBST(struct TreeNode* root, int val){ while (root != NULL) { if (val < root -> val) root = root -> left; else if (val > root -> val) root = root -> right;
2022-05-24 23:43:43
131
原创 五月集训day14栈
1021char * removeOuterParentheses(char * s){ int top = -1,cnt = 0; for (int i = 0; s[i]; ++i) { if(s[i] == '('){ if(cnt != 0) s[++top] = s[i]; cnt++; } if(s[i] == ')'){ cnt--;
2022-05-23 23:43:30
174
原创 五月集训 day14 栈
1021char * removeOuterParentheses(char * s){ int top = -1,cnt = 0; for (int i = 0; s[i]; ++i) { if(s[i] == '('){ if(cnt != 0) s[++top] = s[i]; cnt++; } if(s[i] == ')'){ cnt--;
2022-05-21 23:44:33
133
原创 五月集训day12链表
237一开始懵掉了,后面发现,只需要将这一个结点当作下一个结点就好了,这样就忽略了一个void deleteNode(struct ListNode* node) { node -> val = node -> next -> val; node -> next = node -> next -> next;}剑指 offer || 024创建一个头结点,将链表按照头插法重新插入即可。struct ListNode* reverseList(
2022-05-20 23:11:16
271
原创 五月集训day9二分查找day10位运算day11矩阵
今天开始,我只记录我需要解决的问题吧。剑指offer53int search(int* nums, int numsSize, int target){ int l = 0, r = numsSize;//保证区间是左闭右开 while (l < r) { int mid = l + (r - l) / 2; if (nums[mid] <= target) l = mid + 1;//向右边趋近
2022-05-19 23:30:03
183
原创 五月集训day8前缀和
1480/** * Note: The returned array must be malloced, assume caller calls free(). */int* runningSum(int* nums, int numsSize, int* returnSize){ *returnSize = numsSize; for (int i = 1; i < numsSize; ++i) nums[i] += nums[i - 1]; retu
2022-05-18 23:54:49
195
原创 五月集训 day 7 hash
1512对数组遍历,利用hash记录出现的次数,同时自增,利用hash实现快速求nums[i] == nums[j] 且 i < j。int numIdenticalPairs(int* nums, int numsSize){ int hash[101] = {0}; for (int i = 0; i < numsSize; ++i) { hash[0] += hash[nums[i]]; ++hash[nums[i]];
2022-05-17 23:18:42
192
原创 五月集训day6滑动窗口
1984排序后遍历;int cmp(const void* a,const void* b){ return *(int *)a - *(int *)b;}int minimumDifference(int* nums, int numsSize, int k){ if (k == 1) return 0; int min = 1e5 + 1; qsort(nums,numsSize,sizeof(int),cmp); for (int i
2022-05-16 23:38:11
152
原创 五月集训day5双指针
今天无状态 非常累。917char * reverseOnlyLetters(char * s){ if (strlen(s) <= 1) return s; for (int i = 0, j = strlen(s); i <= j;) { if ((s[i] <= 'Z' && s[i] >= 'A' || s[i] <= 'z' && s[i] >= 'a') &&a
2022-05-15 23:30:05
287
原创 九日集训day1
1-3异或可以看作无进位的加法与运算却可以将进位保留下来,并且左移作为进位。但是不进行强制类型转换,却会出现溢出问题int getSum(int a, int b){ while(b) { int t = a ^ b; b = (unsigned int)(a & b) << 1; a = t; } return a;}4既然不用*符号,那就使用累加,反正乘法的本质是加法int multi
2022-05-15 09:54:59
238
原创 五月集训 day4 贪心
1221很简单的一个配对,最初我使用两个变量分别记录LR,后来发现一个变量增减更优int balancedStringSplit(char * s){ int k = 0, n = 0; for (int i = 0; s[i]; ++i) { if (s[i] == 'L') ++n; else --n; if (n == 0) ++k; } return k;}
2022-05-14 23:24:41
156
原创 五月集训day3 排序
977自己手写快排没有qsort快,这题目只需要平方一下排序就好。/** * Note: The returned array must be malloced, assume caller calls free(). */int comp(const void*a,const void*b){ return *(int*)a-*(int*)b;}int* sortedSquares(int* nums, int numsSize, int* returnSize){
2022-05-13 23:27:38
219
原创 leetcode 每日一题 20220512
944int minDeletionSize(char ** strs, int strsSize){ int sum = 0, n = strlen(strs[0]); for (int i = 0; i < n; ++i) { char ch = strs[0][i]; for (int j = 1; j < strsSize; ++j) { if (ch > strs[j][i])
2022-05-12 23:35:22
84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人