![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode练习
电子科学
有一颗不当码农的心
展开
-
First Bad Version
这道题用Binar Search到是没有什么难度,主要的就是判断中间点的时候容易出错。起初我用的是left = 1, high = n; mid = (left + high)/2,但是不AC。后来发现当起始下标为1的时候,这种求mid会Overflow,这种情况是适用于left从0开始的。从1开始的话需要使用mid = left + (high -left) / 2来计算。即可AC:bool原创 2016-01-17 16:44:37 · 343 阅读 · 0 评论 -
快速排序C++实现(递归,非递归)
#include #include #include using namespace std;int quickSortRecusive(vector& data,int i,int j){ int l = i; int r = j; int x = data[r]; //基准 if(l >= r) return l; while(l < r){ while(l <原创 2016-09-01 16:23:10 · 5965 阅读 · 0 评论 -
Remove Nth Node From End of List
class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* p = new ListNode(0); ListNode* L2 = new ListNode(0); p->next = head; //需要考虑到头结点原创 2016-02-22 09:56:35 · 401 阅读 · 0 评论 -
在O(1)复杂度下删除指定的链表节点
常规的解法是O(n)时间,但是我们不需要找到需要删除节点的前一个节点。我们可以很方便的找打要删除节点的下一个节点,如果我们把下一个节点的内容复制到需要删除的节点上覆盖原有的内容,再把下一个节点删除,就相当于把当前需要删除的节点删除掉了,只需要哦O(1)时间。代码如下,不考虑被删除节点是尾节点的情况:public class Solution { public void deleteNo原创 2016-02-01 10:26:16 · 370 阅读 · 0 评论 -
LeetCode. Pow(x, n)
这题的难度是easy,主要考虑到3点即可:当n是0的时候,结果为1;当n是正数时;当n是负数时,可以把x变成1/x;下面是非递归的解法,代码如下:class Solution {public: double myPow(double x, int n) { double base = n > 0 ? x : 1 / x; double原创 2016-01-31 11:42:05 · 371 阅读 · 0 评论 -
Implement strStr()
这题使用Two pointer思路,最开始我的思路是正确的,但是提交的时候提示超时,后来改了一下判断的流程:代码如下:int strStr(string haystack, string needle) { int index = 0, i = 0; if(needle.size()==0) return 0; if(ha原创 2016-01-09 16:01:16 · 342 阅读 · 0 评论 -
Reverse Linked List
最开始我想到的是用先遍历链表,把元素存入数组中,然后反向遍历数组在重新生成一个链表。在leetcode提交的runtime是8ms代码如下: ListNode* reverseList(ListNode* head) { ListNode *tmp=NULL,*res = NULL,*dummy = new ListNode(0); vector v;原创 2016-01-08 20:41:38 · 461 阅读 · 0 评论 -
Linked List Cycle
起初看到这个题目,毫无头绪,没有理解题目意思,后来在网上看了一下大家的思路,写一下我现在看到最简单的一种方法:利用两个指针,slow,fast。两者均从头开始,slow每次一步,fast每次2步,如果是一个环的话,它们俩肯定会碰到。如果在没有碰到之前有指针到NULL,则不存在环;边界条件:如果只有一个节点,则肯定不存在环;代码如下:class Solution {public:原创 2016-01-08 15:01:42 · 337 阅读 · 0 评论 -
Palindrome Number
本题还是反转一个整数的题目,首先确定负数不是palindrome,题目的提示里有 You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How wo原创 2016-01-07 17:17:34 · 328 阅读 · 0 评论 -
LeetCode Reverse Bits 的C++解决4ms
LeetCode的Reverse Bits C++解决方案原创 2015-12-06 20:57:38 · 426 阅读 · 0 评论 -
102. Binary Tree Level Order Traversal
我解决这道题用的是一个双端队列配合,按照层次把节点push到队列中,先把该节点的值存入到vector中,然后在该队列中移除该节点。当一层结束后,开始判断该层每个节点的左右子树,push到队列中,重新循环。class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vec原创 2015-12-20 12:57:32 · 389 阅读 · 0 评论 -
102. Binary Tree Level Order Traversal
这是我做的第一个需要处理第一个节点的链表题目,参考了下Disuss里面的答案。应该使用 ListNode* dummy = new ListNode(0)创建一个虚拟节点来表示头节点的前一个节点。class Solution {public: ListNode* deleteDuplicates(ListNode* head) { ListNode *node;原创 2016-01-04 22:19:27 · 333 阅读 · 0 评论 -
Python的三种可变参数
初学python没多久,对python中函数的可变参数有点头晕,查阅了stackflow,现总结一下可变参数可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如def testArg(*arg)你可以传入任意多个元素(包括0)到参数中,在函数内部会自动认为是一个元组或列表关键字参数关键字参数在python中习惯用**kw表示,可以传入0到任意多个“关键字-值”,参数在函数原创 2016-12-29 15:46:59 · 9694 阅读 · 2 评论