刷题
programmingfool5
这个作者很懒,什么都没留下…
展开
-
[刷题]栈的压入 弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。思路:构建一个辅助栈 stack 按照push顺序依次来对比pop序列的元素.若栈不为空且栈顶元素等于pop序列的元素...原创 2018-09-18 17:00:25 · 106 阅读 · 0 评论 -
[刷题] 数组中只出现一次的两个数字
题目:一个整型数组里面除了两个数字之外, 其他数字都出现两次, 找出这两个不相同的数字.思路:如果将两个数字缩减为一个数字只出现一次, 那么可以用异或来做: 将数组的元素依次做异或, 那么由于出现两个数字的异或都抵消掉了, 所以最后得到的结果便是那个只出现一次的数字.如何将两个数字分到不同的组里呢. 我们如果对题目中的数组做异或, 那么肯定至少有一位为1, 因为这两个数字不相同, 异或的结...原创 2018-09-21 20:52:37 · 404 阅读 · 0 评论 -
[刷题]1~n的整数中 1 出现的个数
思路:对于每一位来说, 该位是1的数字的个数.比如对于数字:3141592, 百位为1 时, 有多少1出现?将数字分为两部分: pre = 31415 和 post = 92首先考虑百位之前, 即 31415 xx.当百位数字>1时 ,共有(0000~3141) 3142 * 100个1.当百位数字 <= 1时, (0000~3140) 3141 * 100, 特别注意...原创 2018-09-20 18:42:51 · 603 阅读 · 0 评论 -
[刷题] 动态规划合集
题目:给定一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n&amp;amp;gt;1并且m&amp;amp;gt;1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]*k[1] * … *k[m]可能的最大乘积是多少?例子:例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。1.定义状态方程:f(n)=max(f(i)×f(n−i)),&amp;amp;nbsp原创 2018-09-26 11:59:04 · 401 阅读 · 0 评论 -
[刷题] dfs回溯 合集
题目: PermutationsInput:[1,2,3]Output:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]def Permutations (nums): ans = [] dfs(nums,[],ans) return ans def dfs(nums, tmp, ans): if no...原创 2018-09-20 12:13:46 · 517 阅读 · 0 评论 -
[刷题] n 个色子的点数
题目:把n个骰子扔在地上,所有骰子朝上的一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率.def probability(number,maxValue): if number &lt; 1: return p = [[0 for i in range(maxValue * number + 1)] for i in range(2)] ...原创 2018-09-25 16:48:50 · 317 阅读 · 0 评论 -
[刷题] 滑动窗口的最大值
题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...原创 2018-09-25 14:05:44 · 94 阅读 · 0 评论 -
[刷题] 输出所有和为S的连续正数序列
题目:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序def continuous(sum_): small, big = 1, 2 mid = (sum_+1) // 2 cursum = 0 ans = [] cur = big + small while small < mid: if cursum == sum_: ...原创 2018-09-25 12:31:04 · 313 阅读 · 0 评论 -
[刷题]二叉搜索树与双向链表
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。中序遍历 用一个指针记录最后一个遍历的节点 current.left = last_node #当前的节点的left指向便利过的最后一个位置 if last_node:#如果最后一个节点不为空,最后一个节点的right指向当前位置 ...原创 2018-09-19 14:43:06 · 113 阅读 · 0 评论 -
[刷题] MergeSort
题目1️⃣:数组中的逆序对数.思路:利用归并排序的思想.首先将数组分为两两组合, 再对两两组合排序, 排序的过程中记录是不是逆序对数.然后再对这些组合排序, 在排序的过程中, 再对左右两边的子串进行逆序的计数.然后再对这些组合排序, 在排序的过程中, 再对左右两边的子串进行逆序的计数.采用递归, 终止条件肯定是字符串的字数小于2.每次对字符串分两组递归. 计数的条件是当前面的数...原创 2018-10-06 21:06:57 · 154 阅读 · 0 评论