摘要:
这个题貌似经常听说? 两个指针,指针1指向头,指针2指向头+k的位置,指针2到达尾部的时候指针1就是答案 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };* 阅读全文
摘要:
注意负数转换成补码计算 我的方法比较奇葩,把负数的补码用正数表示,结果加1就是答案,因为负数的符号位是1 阅读全文
摘要:
看到第n个矩形相对与第n-1个是多了一行1*2的小矩形,这个新的小矩形能如何贡献价值? 第一种情况,它直接被一个1*2的小矩形覆盖,剩余部分如何填充就是没有加新的小矩形之前的也就是和第n-1个矩形产生的结果相同 第二种情况,它的每个1*1的小矩形分别放一个1*2矩形的一半,这样就要浪费原来的一行矩形 阅读全文
摘要:
找规律发现答案是2n-1 其实对于第n个台阶,相对于前一个状态多了一个台阶,那么我们可以把第n-1个台阶看作一种走法,即走n-1个台阶或者走1个台阶,那么就是先走1个再走n-1个或者先走n-1个再走1个台阶即可到达 那么可以得到 dp[n] = dp[n - 1] * 2; dp[1] = 1; c 阅读全文
摘要:
二分,注意边界 其实就是数组有两部分,都是升序的,左边部分都比右边部分大,暂且称左序列和右序列 所以当 left 指向的元素比 mid 值小,说明是指向了左序列,左指针右移,left=mid 当 right 指向的元素比 mid 的大, 说明是指向了右序列,右指针左移, right = mid 这样 阅读全文
摘要:
这题也很容易想到:一个栈出栈到另一个栈,然后另一个栈再出栈的顺序将是队列的顺序(原序列逆序的逆序是正序) 思路:两个栈,stack1,stack2; stack1负责存放元素,stack2负责暂时存放stack1的一次出栈,为了改变stack1里面元素的存放顺序 入栈操作:1.先将stack1依次出 阅读全文
摘要:
水题,可以立刻想到的方法是 1.从头到尾遍历,依次入栈,然后出栈。时间复杂度和空间复杂度都是O(n) 2.先反转链表,然后遍历。时间复杂度O(n),空间O(1) 3.先放到数组,再倒序存一遍,和方法1思想相同,也是最蠢的方法。 其他方法自己想吧... 最蠢的我贴出最蠢的代码- - /** * str 阅读全文
摘要:
windows给我们提供了一个对话框控件HotKey非常好用,在设置热键的时候用起来很爽,但是一直百度就是没找到在win32下怎样通过消息获取这个控件里面的内容,找到的都是用MFC封装好的控件类来操作的,终于在MSDN找到了答案… 翻译过来就是要给控件发送这个消息 HKM_GETHOTKEY 头文件 阅读全文