
LeetCode POJ HDOJ
刷题记录
童童同学
SLAM IN SLAM
展开
-
sort()排序函数
sort函数的用法:void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);日常使用的时候,基本上,我们只会用到前面两个参数,分别代表的是排序的起始位置和终止位置,sout的第三个参数表示的是排序的规则,很多时候,往往我们的需求不仅仅是要求从小到大排序,此时,我们就可以自定义排序规则,通过自定义comp函数,达到排序目的;comp函数可以自己编写,以适应不同的数据结构。比如要排列一个结构体,采用降原创 2021-04-08 15:53:16 · 479 阅读 · 0 评论 -
记录一下哈希表查找
Q:查找两链表的公共结点?第一想法是双循环,接下来记录一下哈希表查找,其实思路是一样的,循环查找从在链表中查找到哈希表;哈希查找:在哈希表中查找某个值是否存在:if(m.find(cur->val)!=m.end())...原创 2021-03-27 14:54:14 · 431 阅读 · 0 评论 -
反转链表(双指针+递归)
本题出自LeetCode第206题最普通的方法,无非是找一中间量,用于二者之间的置换,采用双指针;class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* cur=head,* pre=NULL,* temp;//trmp用于保存cur的下一个节点 while(cur){ temp=cur->next;//由于下一句,需要改变cur->原创 2021-03-09 16:13:52 · 392 阅读 · 0 评论 -
找出数组中第K大的数,时间复杂度O(n)
通常在K比较小的时候,第一思路是进行K次循环,找出第一大、第二大。。。一直到第K大。这思路当然是没有问题,但是时间复杂度较高,而且K一旦太大,就不太适用了。可以用vector数组降序存储K个元素,符合条件的加入数组中:(K=3)class Solution {public: int thirdMax(vector<int>& nums) { vector<int> ans; for(auto n : nums){原创 2020-09-20 11:06:38 · 1686 阅读 · 0 评论 -
快慢指针、反转链表
单链表中快慢指针可用于找链表中点,模板如下: ListNode*slow=head,*fast=head; while(fast&&fast->next){ slow=slow->next; fast=fast->next->next; }反转链表,模板如下: ListNode* cur = head, * pre = NULL; //反转链表的模板 while(cur) { ListN原创 2020-09-17 19:38:44 · 237 阅读 · 0 评论