- 前言
- 一、题目一
- 1.题目描述
- 2.解题思路
- 3.代码详解
- 二、题目二
- 1.题目描述
- 2.解题思路
- 3.代码详解
- 三、星球推荐
前言
刷题坚持每一天,以下题目引用自:力扣(LeetCode)
原题链接:21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
2.解题思路示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
3.代码详解思路:
对链表里的只进行比较,递归进行链接。
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
if(list1 == NULL) return list2;
if(list2 == NULL) return list1;
if(list1->val < list2->val){
list1->next = mergeTwoLists(list1->next, list2);
return list1;
}
if(list1->val >= list2->val){
list2->next = mergeTwoLists(list1, list2->next);
return list2;
}
return;
}
二、题目二 1.题目描述
原题链接:1985. 找出数组中的第 K 大整数
给你一个字符串数组 nums 和一个整数 k 。nums 中的每个字符串都表示一个不含前导零的整数。
返回 nums 中表示第 k 大整数的字符串。
注意:重复的数字在统计时会视为不同元素考虑。例如,如果 nums 是 [“1”,“2”,“2”],那么 “2” 是最大的整数,“2” 是第二大的整数,“1” 是第三大的整数。
2.解题思路示例 1:
输入:nums = [“3”,“6”,“7”,“10”], k = 4
输出:“3”
解释:
nums 中的数字按非递减顺序排列为 [“3”,“6”,“7”,“10”]
其中第 4 大整数是 “3”
3.代码详解思路:
对字符串进行处理,然后进行排序。
int cmp(const void* q1, const void* q2){
char *a = *(char**)q1;
char *b = *(char**)q2;
if(strlen(a) == strlen(b)) return strcmp(a, b);
return strlen(a) - strlen(b);
}
char * kthLargestNumber(char ** nums, int numsSize, int k){
if(numsSize < k) return NULL;
qsort(nums, numsSize, sizeof(char**),cmp);
return nums[numsSize-k];
}
三、星球推荐
星球链接:英雄算法联盟
星球里有什么?
【朋友圈】一个极致精准的自律、编程、算法的小圈子。
【算法集训】以月为单位组织算法集训,每天四题,风雨无阻。
【排行榜】每天、每周都会有榜单,激励大家不断进步,不断成长。
【个人规划】每个人都写好自己的规划,也可以查看他人的规划,时刻警醒自己不掉队。
【打卡挑战】每日一题打卡、每日早起打卡、算法集训打卡、规划完成情况打卡。
在星球里做什么?
目前星球人数达到450+,在星球里你能够遇到一群志同道合之人,因为都是花钱进来的,你不会看到任何浑水摸鱼的人,每个人都有自己的每月规划,星主每月都会组织算法集训,每天一起刷题,你可以看到别人的解题报告,取其之长,补己之短。



