- 博客(5)
- 收藏
- 关注
原创 leetcode349. 两个数组的交集 ----日常刷题
349. 两个数组的交集 //双指针+排序:其实就是把两个数组进行排序,然后用双指针进行滑动对比就可以了。 //排序+二分法: 把一个短的数组如nums1进行排序,然后nums2中的每一个元素在nums1中进行二分查找 ps:二分法目前存在漏洞,待完善。 排序+双指针代码实现 /*int cmp(void *lhsPtr, void *rhsPtr) { return (*(int*)lhsPtr > *(int*)rhsPtr) - (*(int*)lhsPtr &l
2020-08-01 21:21:42
118
原创 leetcode 1365. 有多少小于当前数字的数字--日常刷题
1365. 有多少小于当前数字的数字 提示: 2 <= nums.length <= 500 0 <= nums[i] <= 100 第一种 简单的双循环 不多注解 *int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize){//双循环 int*ans=calloc(numsSize,sizeof(int)); int i,j; for(i=0;i<numsSize;i++){ f
2020-08-01 14:59:04
140
原创 leetcode:1512. 好数对的数目--日常刷题
1512. 好数对的数目 主要为了练习哈希表 截图来源:https://leetcode-cn.com/problems/number-of-good-pairs/ 1、可以利用hash table记录不同数字出现的个数; 2、当某个数字的个数出现的次数大于等于2就存在好数对;当重复的次数是n,那么好数对就增加 n(n-1)/2; 3、遍历统计好的hash table就可以得到答案; // 依据题意限定 // 1 <= nums.length <= 100 // 1 <= nums[i]
2020-07-31 20:30:08
121
原创 笔记:查找算法
笔记:查找算法 1.顺序查找 int SequenceSearch(int *a, int value, int n) { int i; for(i=0; i<n; i++) if(a[i]==value) return i; return -1; } 2.二分查找(折半查找) 循环版本 int BinarySearch1(int *a, int value, int n) { int low, high, mid; low = 0; high = n-1; while(low<=high) {
2020-07-31 20:18:16
113
原创 leetcode 面试题08.03 魔术索引--日常刷题
leetcode 面试题08.03 魔术索引 二分剪枝 思路与算法 此问题如果用暴力的方法来解决,我们只需要对原数组从前往后进行一次遍历,找到第一个可行的位置返回即可,这里不再赘述。而本方法会进行一定程度的剪枝,在一些情况下会达到较优的时间复杂度,在最差情况下仍会退化成线性的时间复杂度,这里我们分两种情况讨论。 第一种情况是数组中只有一个满足条件的答案。我们假设这个答案为 ii,那么意味着 [0 \ldots i-1][0…i−1] 的值均小于自身的下标,[i+1 \ldots n-1][i+1…n−1]
2020-07-31 13:45:06
147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人