题目来源于知识星球—英雄算法联盟,五月算法集训专题
目录
前言
跟随英雄算法联盟博主—英雄哪里出来,每天完成相应的算法练习,一个月后,必定会有所成长!
分治算法也很经典了,但是我当初学的时候可谓是一头雾水,迷迷糊糊的!
一、21.合并两个有序链表(简单)
1.题目描述
2.解题思路
先考虑存在链表为空链表的情况,如果有其中一个链表为空链表,则直接返回
另一个非空链表。当两个链表都不为空时,用递归方法取值较小的放在前面,
next指针继续计算。
3.代码演示(C++)
class Solution
{
public:
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2)
{
if(list1 == nullptr)
{
return list2;
}
else if(list2 == nullptr)
{
return list1;
}
ListNode *t = new ListNode();
if(list1->val < list2->val)
{
t->val = list1->val;
t->next = mergeTwoLists(list1->next, list2);
}
else
{
t->val = list2->val;
t->next = mergeTwoLists(list1, list2->next);
}
return t;
}
};
4.题目链接
二、1985.找出数组中的第K大整数(中等)
1.题目描述
2.解题思路
这道题的本质为将字符串数组进行排序,然后找到第K大的整数,首先将
字符串长的放到前面,如果字符串长度相同,那么进行降序排列,最后
返回第k大的元素。
3.代码演示(C++)
class Solution
{
public:
static bool cmp (string &a, string &b)
{
if(a.size()==b.size()) return a>b;
return a.size() > b.size();
}
string kthLargestNumber(vector<string>& nums, int k)
{
sort(nums.begin(), nums.end(),cmp);
return nums[k-1];
}
};
4.题目链接
三、558.四叉树交集(中等)
1.题目描述
2.解题思路
以后再来刷
3.代码演示(C++)
4.题目链接
四、932.漂亮数组(中等)
1.题目描述
2.解题思路
看着挺简单,不过很难想
3.代码演示(C++)
4.题目链接
总结
每天跟随英雄哥学习相关的算法,一个月会收获很多,如果你想了解更多关于知识星球的内容,欢迎联系我!