摘要:
设计一个最小堆,要求实现push、pop、top、getMin几个功能。 思路:主要问题在于getMin,必须是一个常数级的查找返回,因此最好是每push一个就和当前min进行比较,始终保存min。 class MinStack {public: MinStack() { head = new ListNode(INT_MAX); } void push(in... 阅读全文
阅读排行榜
Palindrome Number
2015-03-08 10:49 by 笨笨的老兔子, 165 阅读, 收藏,
摘要:
判断一个整数是否是回文数 注意点: 负数不是,因为多了一个负号 小心溢出,比较的时候不要将数字12345EDCBA变成ABCDE54321进行比较,而是将ABCDE5432和12345EDCB进行比较。 class Solution {public: bool isPalindrome(int x) { if (x =10) { reverse = rev... 阅读全文
Linked List Cycle II
2015-04-07 15:59 by 笨笨的老兔子, 161 阅读, 收藏,
摘要:
给定一个链表,如果该链表有环,请返回环的起点,否则返回NULL 思路:一个FAST每次前进两步和一个SLOW每次前进一步,当两个指针相等的时候,其中一个回到head,然后两个同时往前走,再次相遇时的位置就是环的起点证明:假设第一次相遇时,SLOW走了M步,FAST走了2M步,环的长度是L,相遇点距离环的起点为K,则此时FAST回到起点,距离环的起点为M-K,SLOW距离环的起点为L-K,当FAST... 阅读全文
Add Two Numbers
2015-03-30 10:32 by 笨笨的老兔子, 159 阅读, 收藏,
摘要:
给定两个链表,链表中的数字非负,这是将两个整数由链表表示,且逆序,求两个整数的和。Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 0 -> 8思路:模拟题,对应位数相加,考虑一下链表长度不同,以及进位即可 class Solution {public: ListNode *addTwoNumbers(ListNode *l1, ListNod... 阅读全文
Rotate Array
2015-03-05 14:39 by 笨笨的老兔子, 155 阅读, 收藏,
摘要:
将一个长度为n的数组循环右移k次 注意点: k有可能大于n,需要取余。 需要考虑空间开销,存在空间开销为O(1)的解法 需要考虑时间开销 比较巧妙的方法是利用STL内置的reverse函数,做三次即可。举个例子:array[7]={1,2,3,4,5,6,7},n=3 7,6,5,4,3,2,1 5,6,7,4,3,2,1 5,6,7,1,2,3,4 代码实现比较简单: class Sol... 阅读全文
浙公网安备 33010602011771号