自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 2020年12月6日leetcode每日一题

思路杨辉三角,简单题,就不写思路了,直接贴代码代码/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free(). */int

2020-12-06 21:45:50 101

原创 2020年12月5日leetcode每日一题

思路统计有多少类任务,以及每类任务的数量找出未冷却且剩余数量最多的任务代码int leastInterval(char* tasks, int tasksSize, int n) { int freq[26]; memset(freq, 0, sizeof(freq)); for (int i = 0; i < tasksSize; ++i) { ++freq[tasks[i] - 'A']; } // 任务总数 int m =

2020-12-06 21:44:09 126

原创 2020年12月4日leetcode每日一题

思路抄的leetcode,今天比较忙,明天补上代码struct dilinklist{ int endval; int len; struct dilinklist *prenode; struct dilinklist *nextnode;}listnode;int Addlen(struct dilinklist *p , int key , int keynum) { while(p->prenode != NULL &amp

2020-12-04 23:33:53 131

原创 2020年12月3日leetcode每日一题

思路很直观的思路是我们枚举每个数判断其是不是质数。考虑质数的定义:在大于 11 的自然数中,除了 11 和它本身以外不再有其他因数的自然数。因此对于每个数 xx,我们可以从小到大枚举 [2,x-1][2,x−1] 中的每个数 yy,判断 yy 是否为 xx 的因数。但这样判断一个数是否为质数的时间复杂度最差情况下会到 O(n)O(n),无法通过所有测试数据。考虑到如果 yy 是 xx 的因数,那么 \frac{x}{y}yx​ 也必然是 xx 的因数,因此我们只要校验 yy 或者 \frac{

2020-12-03 09:43:34 134

原创 2020年12月2日leetcode每日一题

leetcode刷题记录。321.拼接最大数思路具体算法:从 nums1 中 取 min(i, len(nums1))min(i,len(nums1)) 个数形成新的数组 A(取的逻辑同第一题),其中 i 等于 0,1,2, … k。从 nums2 中 对应取 min(j, len(nums2))min(j,len(nums2)) 个数形成新的数组 B(取的逻辑同第一题),其中 j 等于 k - i。注意我这里取数的上限,即不能超过数组本身的长度,这点容易大家忽略将 A 和 B 按照上面的 me

2020-12-02 22:15:04 144

原创 2020年12月1日LeetCode每日一题

leetcode刷题记录。34.在排序数组中查找元素出现的第一个位置和最后一个位置思路先用二分查找到为target的随便一个元素,然后从这个元素开始搜索向左向右搜索第一个元素和最后一个元素代码/** * Note: The returned array must be malloced, assume caller calls free(). *///二分查找int* searchRange(int* nums, int numsSize, int target, int* returnSi

2020-12-01 16:00:22 82

原创 2020年11月30日leetcode每日一题

leetcode刷题记录 767.重构字符串思路分为两大部分,第一部分判断字符串是否可以重构,第二部分判断重构字符串第一部分:找出最大出现次数字母的次数,判断是否超过(n+1)/2,若超过则返回空字符串,若不超过则可以进行重组织第二部分:先对出现次数小于等于n/2的字母在奇数下标上进行排序,奇数下标满了之后,再排到偶数下标之上。若果有字母的出现次数等于(n+1)/2,则将它全部排在偶数下标上代码char * reorganizeString(char * S){ int length=s

2020-11-30 14:41:53 128 1

原创 2020年11月29日

leetcode刷题记录 976.三角形的最大周长思路排序后三个元素相加求最大代码int cmp(const void* a,const void* b){ int *x=(int*)a,*y=(int*)b; return *x-*y; }int largestPerimeter(int* A, int ASize){ qsort(A,ASize,sizeof(int),cmp); int max=0; for(int i=2;i<ASize;i+

2020-11-29 19:47:21 41

原创 2020年11月28日

leetcode刷题记录 剑指offer 50. 第一次只出现一次的字符思路用一个结构体保存值和val,然后进行排序,简单题就不多说了代码typedef struct valandindex{ char val; int index;}vi;int cmp(const void*a,const void* b){ vi *x=(vi*)a,*y=(vi*)b; return x->val-y->val;}char firstUniqChar(ch

2020-11-29 19:47:05 43

原创 2020年11月27日

leetcode刷题记录 454.四数相加思路将四个数组两两求和相加即可代码struct hashTable { int key; int val; UT_hash_handle hh;};int fourSumCount(int* A, int ASize, int* B, int BSize, int* C, int CSize, int* D, int DSize) { struct hashTable* hashtable = NULL; for

2020-11-27 21:13:40 65

原创 2020年11月26日

leetcode刷题记录 164.最大间距思路1.求出数组中最大值的位数,位数代表了我们要进行多少次将元素放入桶中和将元素从桶中取出来的过程2.定义一个buf数组,用来暂存每次进行上述过程后排序的结果,这个结果每次都会通过buf数组赋给nums数组3.定义r个桶用来存放数组中的元素,其中r是采用的进制的最大数,例如10进制,r就为10;16进制r就为16。4.将每个元素放到相应的桶中,规则是:对该元素从个位开始取,取到的数是几,就放到几号桶。5.按桶序号的大小,将元素依次取出来存放到buf数组中

2020-11-26 17:36:23 67

原创 2020年11月25日

leetcode刷题记录 1370.上升下降字符串思路统计每个字符的数量,然后正序逆序分别进行遍历即可代码char * sortString(char * s){ int count[26]; memset(count,0,sizeof(int)*26); for(int i=0;i<strlen(s);i++) count[s[i]-'a']++; char* ret=(char*)malloc(sizeof(char)*(strlen(s)+1));

2020-11-25 12:07:51 47

原创 2020年11月24日

leetcode刷题记录 222.完全二叉树的节点个数思路深度优先遍历,树的节点个数等于左子树的节点个数加上右子树的节点个数+1代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */int countNodes(struct TreeNode* r

2020-11-24 16:49:46 53

原创 2020年11月23日

leetcode刷题记录 452.用最少数量的箭引爆气球思路先对数组points排序,然后找出公共空间,计算公共空间的个数即可代码int cmp(const void* a,const void*b){ int*x=*(int**)a,*y=*(int**)b; if(x[0]==y[0]){ if(x[1]-y[1]>0) return 1; else if(x[1]-y[1]<0) return -1; else ret

2020-11-23 11:02:05 56

原创 2020年11月22日

leetcode刷题 242.有效的字母异位词思路对两个数组进行排序,然后从头开始比较,遇到不相同的则退出循环,如果两个数组都到了末尾还相同,则两个数组相同代码int cmp(const void* a,const void* b){ char x=*(char*)a,y=*(char*)b; return x-y;}bool isAnagram(char * s, char * t){ int length1=0,length2=0; while(*(s+len

2020-11-22 16:01:54 59

原创 2020年11月21日

leetcode刷题记录 148.排序链表思路归并排序代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* merge(struct ListNode* head1,struct ListNode* head2){ //在头结点前面加入一个结点确保对头结点操作的一致性,并进

2020-11-21 13:10:01 63

原创 2020年11月20日

leetcode刷题记录 147.对链表进行插入排序思路传统插入排序的思路代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* insertionSortList(struct ListNode* head){ if(head==NULL||head->n

2020-11-21 11:26:46 60

原创 2020年11月19日

leetcode刷题记录 283.移动零思路定义一个变量,将nums中非零元素排到数组的前面,后面再用零补齐代码void moveZeroes(int* nums, int numsSize){ int count=0; for(int i=0;i<numsSize;i++){ if(nums[i]!=0) nums[count++]=nums[i]; } for(count;count<numsSize;count++) nums[cou

2020-11-19 09:43:39 54

原创 2020年11月18日

leetcode刷题记录134.加油站思路遍历所有的开始点,若可以则返回;若不可以则直接返回-1代码int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize){ for(int i=0;i<gasSize;i++){ if(gas[i]<cost[i]) continue; int total=gas[i],j=i; while(total>=0

2020-11-18 19:03:18 49

原创 2020年11月17日

leetcode刷题 1030.距离顺序排列矩阵单元格思路今天和同学出去喝酒了,直接抄的,我先写,明天补上代码/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array must be malloced, assu

2020-11-17 22:42:02 58

原创 2020年11月16日

leetcode刷题记录 406.根据身高重建队列思路先对队列按身高降序,按k升序排列,然后便利队列把k当作下标插入即可。代码/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array must be malloc

2020-11-16 15:06:14 48

原创 2020年11月15日

leetcode刷题记录 402.移掉k位数字思路//数学知识:123a456 和123b456 的大小取决于a和b的大小,也就是说两个数字在同位数的情况下的大小关系取决于第一个不相同的数//数据结构:采用栈//算法思路:将即将入栈的元素栈中的元素一一进行比较,找到元素该有的位置代码char * removeKdigits(char * num, int k){ int len = strlen(num), top = 0; char* stk = malloc(sizeof(c

2020-11-15 11:34:54 33

原创 2020年11月14日

leetcode刷题记录 1122.数组的相对排序思路先对原数组进行排序,再创建一个数组用于记录元素是否被按照数组2进行排序,最后将不在数组2中的元素按照升序进行排序即可代码/** * Note: The returned array must be malloced, assume caller calls free(). *///正常排序//按数组2排序//添加剩下元素int cmp(const void* a,const void* b){ return *((int*)a

2020-11-14 22:23:18 34

原创 2020年11月13日

leetcode刷题记录 328.奇偶链表思路把下标为奇数的结点连接成一个新链表,下标为偶数的结点连接成一个新链表,再将两个链表连接起来即可。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* oddEvenList(struct ListNode* head){ i

2020-11-13 20:47:59 52

原创 2020年11月12日

leetcode刷题记录 922.按奇偶排序数组||思路动态生成一个与原始数组大小相同的数组作为原始数组的备份,当数组元素是偶数的时候用一个偶数下标进行存放(注意偶数下标是递增的),否则就用奇数下标进行存放。代码int* sortArrayByParityII(int* A, int ASize, int* returnSize){ int *copy=(int *)malloc(sizeof(int)*ASize); for(int i=0;i<ASize;i++) copy

2020-11-12 10:48:39 42

原创 2020年11月11日

2020年11月11日学习记录leetcode刷题记录 514.自由之路**思路:维护一个dp[n][m]数组,其中n是key数组的长度,m是ring数组的长度,dp[i][j]表示从游戏开始到拼接完成key[0:i]在ring[j]==key[i]的时候的最小步数。具体解题思路链接在这:(https://leetcode-cn.com/problems/freedom-trail/solution/dong-tai-gui-hua-xiang-xi-jie-shi-bei-keng-de-xian/)

2020-11-11 15:32:41 53

原创 2020年11月10日

标题LeetCode 31.下一个排列算法思想一个排列有下一个排列的条件是数组中存在升序。让排列变大的方法是将数组中的升序变成降序。而要实现最小增加,则较小数尽量靠右,较大数尽量较小,所以我们可以从后往前找到较小数,再从后往前找到较大数。实现代码void nextPermutation(int* nums, int numsSize){ if(numsSize==0||numsSize==1) return nums; //从后往前找到尽量靠右较小数 int i;

2020-11-10 15:00:08 37

原创 2020年11月9日

2020年11月9日学习记录leetcode刷题记录973.最接近远点的K个点**思路与方法:**将每个点到原点的欧几里得距离的平方从小到大排序后,取出前 K 个即可。代码:class Solution { public int[][] kClosest(int[][] points, int K) { Arrays.sort(points, new Comparator<int[]>() { public int compare(int

2020-11-09 10:53:32 40

原创 2020年11月8日

2020年11月8日学习记录leetcode刷题记录122. 买卖股票的最佳时机Ⅱ**思路:**大体思路是找到最大的升序数组段组,对每一个最大升序数组段做差求和即为结果。首先进行特殊情况的处理,如果数组的长度为1,则直接返回0。定义两个变量l和r分别指向数组的第一个元素和第二个元素,如果数组[l]大于数组[r],则同时将l和r向右移动一个单位,否则l不动,对r进行处理,利用循环和条件判断将r定位到此升序数组段的右端点。求出当前升序数组段的利润,再令l=r+1,r=r+1,重复上述步骤直到数组末尾。

2020-11-08 09:44:29 121

原创 2020年11月7日

2020年11月7日学习记录leetcode学习记录**思路:**好不容易写了一长串,被这编辑器弄没了,直接上代码吧!代码:class Solution { public int countRangeSum(int[] nums, int lower, int upper) { long s = 0; long[] sum = new long[nums.length + 1]; for (int i = 0; i < nums.length;

2020-11-07 23:55:07 54

原创 2020年11月6日

2020年11月6日学习记录leetcode刷题记录1356.根据数字二进制下1的数目排序**思路:**定义一个数组来存放每个数字二进制中1的个数,数组下标代表数字;用快排进行排序,并定义一个排序方法。代码:int *bit;int cmp(const void *a,const void b){int x =(int )a,y=(int *)b;return bit[x]==bit[y]?x-y:bit[x]-bit[y];}int getbit(int x){int num=0;

2020-11-06 14:17:54 150

原创 2020年11月5日

2020年11月5日学习记录leetcode刷题记录127.单词接龙**思路:**首先将wordlist转化为哈希表(为了便于查找),利用广度优先搜索将beginword入队,对beginword入队,通过对beginword每个字母进行’a’到’z’的改变来找到下一组可以转换的单词组,若单词组中存在endword,则返回当前步数+1,否则对单词组中的每一个单词进行同样的操作,若队列为空还没有返回值,则返回0**注意点:**在对单词的字母进行替换时,要先将字符串转化为字符数组;替换字母后的单词与字典

2020-11-05 19:42:42 39

原创 2020年11月4日

2020年十一月4日学习记录leetcode刷题57.插入区间解题思路:首先判断原始区间列表是否为空,如果为空则直接复制插入区间的元素。找到插入区间的左右端点的位置(注意特殊情况),找到融合区间的左右端点值,计算区间列表的大小,给区间列表复制返回即可。代码:class Solution {public int[][] insert(int[][] intervals, int[] newInterval) {if(intervals.length==0){int[][] newarray

2020-11-04 21:59:32 58

原创 2020年11月3日

2020年11月3日学习记录leetcode刷题记录941题有效山脉数组解题思路:找到数组中最大值所在的下标,分别从下标所在的位置从左到右,从右到左遍历判断是否是单调递减序列,最后判断左下标是否为零,右下标是否为数组长度减一,同时判断边界两值的大小情况。...

2020-11-03 14:10:22 49

原创 2020年11月2日

2020年11月2日学习记录leetcode刷题349.两个数组的交集解题思路:将第一个数组排序,循环比较两个数组的元素,将相同的元素保存到另一个新数组中,返回新数组。

2020-11-02 21:09:54 48

原创 2020年11月01日

2020年11月1日学习记录139.单词拆分解题思路:1.开辟长度为s.length+1的数组空间,规定第0个元素为true。2.采用动态规划求解将要判断的字符串分成两部分,第一部分可以根据前面的状态得到,第二部分可以根据 对字符串列表构成的hash树判断,遍历的点从第一个端点到最后一个端点。...

2020-11-01 16:12:54 43

原创 2020年10月31日

2019年10月31日学习记录leetcode刷题第380题常数时间插入、删除和获取随即元素解题思路:哈希拉链法,建立结点存储值、链表的长度以及下一个节点指针,建立一个结构体存储头指针,利用哈希表的性质进行常数时间的插入、删除和返回随机值...

2020-10-31 21:35:12 218

原创 2020年10月30日

2019年10月30日学习记录LeetCode刷题463.岛屿的周长解题思路1:遍历所有的点,若值为1,判断此点上下左右是否越界,若越界周长加一,若不越界则判断值是否为0,若为0,则周长变量加1。解题思路2:采用DFS思想,只有一个岛屿,选择一个点作为岛屿的入口进行上下左右遍历,若遍历的地方超过边界则周长加一,若遍历的地方为水则周长加一,若遍历的地方为2则说明之前遍历过,直到遍历完所有的节点...

2020-10-30 22:52:55 45

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除