1957

无聊蛋疼的1957写的低端博客
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 22 下一页

2013年12月30日

摘要: /** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int... 阅读全文

posted @ 2013-12-30 18:22 1957 阅读(155) 评论(0) 推荐(0) 编辑

摘要: 很简单...都做过...不过让就用A,B这两个数组,一下忘了...思维习惯就是去选小的啦,其实我们可以选大的放到最后不就好处理了!class Solution {public: void merge(int A[], int m, int B[], int n) { int la... 阅读全文

posted @ 2013-12-30 10:49 1957 阅读(125) 评论(0) 推荐(0) 编辑

摘要: 和I一样的...只是把bool数组改成int数组,记录下次数就好了...不过为毛是最优我还没有证明...意识流吧...class Solution {public: int jump(int A[], int n) { vector f(n , 0); int maxi = 0; for(int i = 0 ; i 0 || i == 0){ if(i + A[i] > maxi){ for(int j = maxi + 1 ; j <= i + A[i]&& j<n; j++... 阅读全文

posted @ 2013-12-30 10:18 1957 阅读(88) 评论(0) 推荐(0) 编辑

摘要: 开始想法扫描一次。。。然后再标记一次。。。O(n^2)但是。。。TLE啦。。。太暴力了。。。其实只要标记过了的,我们就不用处理了。。。然后如果到达一个可到达的地方,而且要jump到没有标记的地方,那么我们再标记吧,O(n)class Solution {public: bool canJump(int A[], int n) { vector f(n,false); f[0] = true; int maxi = 0; for(int i = 0 ; i maxi) { ... 阅读全文

posted @ 2013-12-30 01:31 1957 阅读(148) 评论(0) 推荐(0) 编辑

2013年12月29日

摘要: 建立一个映射,old_graph -> clone_graph 节点的映射。如果不存在就新建,如果存在就把映射的节点push_back到neighbor里面/** * Definition for undirected graph. * struct UndirectedGraphNode { * int label; * vector neighbors; * UndirectedGraphNode(int x) : label(x) {}; * }; */class Solution {public: UndirectedGraphNode *cloneGra... 阅读全文

posted @ 2013-12-29 23:02 1957 阅读(520) 评论(0) 推荐(0) 编辑

摘要: 1...26给一个字符串有多少种组成方法。。开始觉得嘛。。。这个呢。。就是看一位一位的看嘛。。。如果新加入的这位可以和前面的组成1..26 之间的数,那么就等于前面那些位能组成的方法+除去前两位组成的方法f[i]表示从头到弟i位有多少种方法那么就是i如果是能和i-1构成 1..26...那么f[i] = f[i-1] + f[i-2]意思就是i单独的一种方法,和与i-1一起构成两位的方法。如果不能f[i] = f[i-1]到此,感觉就做完啦。不过。。。不过。。。我没有考虑0啊。。。有0要特殊处理。。。首先第一位肯定不能有0 , 也不能有连续的010,20这种只f[i] = f[i-2]00,3 阅读全文

posted @ 2013-12-29 20:01 1957 阅读(1088) 评论(0) 推荐(0) 编辑

摘要: DFS所有可能。。。class Solution {public: void search(const string& s , vector& ans , int step , const string& ip , int start){ if(s.size() == start && step == 4){ ans.push_back(ip.substr(1 , ip.size()-1)); // cout > n; if(n>=100 && n restoreIpAddresses(string s)... 阅读全文

posted @ 2013-12-29 13:44 1957 阅读(770) 评论(0) 推荐(0) 编辑

摘要: 找一个没排序的数组的最长连续块是多长第一想法,排序,遍历就ok。。。但是要求时间复杂度是O(n)想了几分钟TAT用hash记录每个数字啊。。。然后枚举就好了。。数字为n的时候扫描其左右两边时候有连续的数字如果有就从hash删掉。。继续。。。直到没有。。。记录长度class Solution {public: int longestConsecutive(vector &num) { int size = num.size(); if( size == 0 ) return 0; unordered_set st; int ans = 1; ... 阅读全文

posted @ 2013-12-29 11:58 1957 阅读(116) 评论(0) 推荐(0) 编辑

2013年12月27日

摘要: 带random随机指向链表任意地方的一个链表...做深度拷贝.先做next的拷贝,建立新链表.然后把老链表的next指向新链表对应的等价节点,然后把这个新的节点的random指向老链表.然后呢...很明显newListNode -> random -> random -> next就是新链表rand... 阅读全文

posted @ 2013-12-27 10:25 1957 阅读(514) 评论(0) 推荐(0) 编辑

2013年12月26日

摘要: 网上查了下,好像可以用DP做...但是我这种DP弱...感觉只要是DP就做不来TAT(等下再看看DP的题解其实这个可以用Trie做.把dict的词全部建立一颗Trie然后呢,从给定的字符串开始走。。。遍历一下Trie,如果遇到isWord,就说明这个前缀在dict里面啦。那么在这个位置做个标记。然后扫描这些做了标记的位置(肯定是在后面啦。。。从前往后就ok了。。。继续从下一个字符开始作为起点,做如上处理。如果最后s.size()-1这个位置也是结尾的字符,那么就说明这个是ok的!返回trueclass TrieNode{ public: TrieNode* childs[2... 阅读全文

posted @ 2013-12-26 18:53 1957 阅读(676) 评论(1) 推荐(0) 编辑

上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 22 下一页