Leetcode每天兩題10-第24題和第26題
關閉朋友圈3年。無意中查看了幾個好友的朋友圈,大體上可以分為三類。
1.正能量+雞湯類
每條記錄都是不給你反駁餘地的真理,或者是各種成功人士自己都不知道成功方法。日子總有困難和挫折,能偶爾以此激勵自己也是可以的。但是如果一個人只是活在精神興奮劑中或者是假性積極中,也是一種可悲。
2.生活流水賬
每天吃了什麼做了什麼去了哪生病了收到禮物了,有的甚至一天更新好幾條。始終不明白這樣的社交圈的意義是什麼,這樣的每條記錄背後的心理是什麼?是習慣嗎?
3.廣告類
無處不在。。。
自欺欺人的說這是我的生活方式,這是我的社交圈,其實只是因為空虛找了一種不那麼明顯的方式來浪費時間罷了。
發完牢騷繼續做題。
24. Swap Nodes in Pairs
成對交換鏈表節點
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4, you should return the list as 2->1->4->3
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
代碼+注釋
class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode* dummy= new ListNode(-1),*pre=dummy,*cur=head; dummy->next=head; while(cur&&cur->next) { //確定後繼節點 pre->next=cur->next; cur->next=cur->next->next; //交換連個節點 pre->next->next=cur; pre=cur; cur=cur->next; } return dummy->next; }};
26. Remove Duplicates from Sorted Array
從有序數組裡移除重複項。
Given a sorted array, remove the duplicates in-place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
Example:
Given nums = [1,1,2],
Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
It doesnt matter what you leave beyond the new length.
代碼+注釋
class Solution {public: int removeDuplicates(vector<int>& nums) { //新建一個索引 //循環數組,每次遇到第一個不重複的數字就覆蓋數組的原值 //返回索引+1作為長度 int newlength = 0; int n = nums.size(); if (n == 0) return 0; for (int i = 1; i<n; i++) { if (nums[i] != nums[newlength]) { nums[++newlength] = nums[i]; } } return newlength + 1; }};
推薦閱讀:
※Leetcode之旅|還原二叉樹
※動態規劃問題總結
※遊戲開發與程序設計知識總結03——演算法
※刷題的日常Day1--重建二叉樹
※Leetcode之旅|Morris 後序遍歷