摘要: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 分析: 1.前序遍历的第一个为根结点,在中序遍历中找到根结点的 阅读全文
posted @ 2019-09-22 17:18 西*风 阅读(156) 评论(0) 推荐(0)
摘要: 剑指offer-旋转数组的最小数字(二分) 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2, 阅读全文
posted @ 2019-09-22 17:09 西*风 阅读(133) 评论(0) 推荐(0)
摘要: 输入一个链表,输出该链表中倒数第k个结点。分析:定义两个结点p1和p2都指向头节点,p1先走k-1步,然后p1和p2一起走,当p1走到链表尾部时,p2指向的结点就是倒数第k个结点遍历一遍链表即可,时间复杂度O(N)ListNode* FindKthToTail(ListNode* pListHead, unsigned int k){ if(pListHead==NULL||k==0) ... 阅读全文
posted @ 2019-09-22 15:31 西*风 阅读(142) 评论(0) 推荐(0)
摘要: 题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。class Solution {public:int NumberOf1(int x){ int c=0; while(x!=0) { c++; x=x&(x-1);//把x最右边的1变成0 } return c;}};分析:如果一个整数不为0,那么这个整数至少有一个位是1,如果我们... 阅读全文
posted @ 2019-09-22 15:04 西*风 阅读(143) 评论(0) 推荐(0)