摘要: 题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。分析:可以使用递归!class Solution {public: int Sum_Solution(int n) { int sum=n; (n>0)&&(sum+=Sum_Solution(n-1)); retur... 阅读全文
posted @ 2019-09-23 17:29 西*风 阅读(151) 评论(0) 推荐(0)
摘要: 题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的... 阅读全文
posted @ 2019-09-23 16:28 西*风 阅读(148) 评论(0) 推荐(0)
摘要: 最小的K个数 题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 分析:要求的的最小的k个数,那么我们可以采用最大堆 先往最大堆里面存储k个数,然后剩下的数和堆顶元素比较,小于堆顶元素则替换堆顶元素,最后堆中剩下的k个 阅读全文
posted @ 2019-09-23 16:16 西*风 阅读(152) 评论(0) 推荐(0)
摘要: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。分析:采用阵地攻守的思想先找到出现次数最多的元素,然后统计该元素的出现次数,判断是不是超过数组长度的一半阵地攻守思想:第一个数字作为第一个士兵,守阵地,c=1,遇到相同元素,c++,遇到不同... 阅读全文
posted @ 2019-09-23 15:14 西*风 阅读(398) 评论(0) 推荐(0)
摘要: 题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)分析:采用栈模拟其压入顺序,当栈顶元素为当前出栈元素的话,将当前栈顶元素出栈,否则一直压入... 阅读全文
posted @ 2019-09-23 11:07 西*风 阅读(124) 评论(0) 推荐(0)
摘要: 题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5分析:dfs遍历交换其左右子树即可/*... 阅读全文
posted @ 2019-09-23 10:12 西*风 阅读(131) 评论(0) 推荐(0)
摘要: 输入一个链表,反转链表后,输出新链表的表头。 分析: 方法1: 可以利用栈来做,其实递归也是一个栈,叫做递归栈 方法2: 双指针迭代法,分别指针节点的前驱和后继 func reverseList(head *ListNode) *ListNode { var p1 *ListNode p1=nil 阅读全文
posted @ 2019-09-23 10:04 西*风 阅读(130) 评论(0) 推荐(0)
摘要: 剑指offer-数值的整数次方(快速幂) 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入:x = 2.00000, n = 10 输出:1024.00000 示例 2: 输入:x = 2.10000, n = 3 输出 阅读全文
posted @ 2019-09-23 09:46 西*风 阅读(192) 评论(0) 推荐(0)