随笔分类 -  Algorithm

摘要:Problem: 【题目】 给定一个整型矩阵matrix,请按照转圈的方式打印它。 例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11, 10 【要求】 额外空间复杂度为O(1)。 阅读全文
posted @ 2019-06-07 17:06 自由之翼Az 阅读(291) 评论(0) 推荐(0)
摘要:Problem: 如何仅用队列结构实现栈结构? Solution: 队列是先进先出,而栈是先进后出 故使用两个队列来实现一个栈的功能 一个存放原来的数据, 另一个做数据倒腾的容器 Code: Problem2: 如何仅用栈结构实现队列结构? 解题思路: 同样的,使用两个栈Data,Temp来实现列表 阅读全文
posted @ 2019-06-07 15:15 自由之翼Az 阅读(217) 评论(0) 推荐(0)
摘要:题目描述: 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。 【要求】 1.pop、push、getMin操作的时间复杂度都是O(1)。 2.设计的栈类型可以使用现成的栈结构。 解题思路: 使用一个辅助栈,里面存的目前栈中的最小值 代码实现: 阅读全文
posted @ 2019-06-07 13:39 自由之翼Az 阅读(506) 评论(0) 推荐(0)
摘要:题目描述: Problem 1: 用数组结构实现大小固定的栈 解题思路: 给定一个指针即可实现。 代码实现: Problem2: 使用数组实现队列和 解题思路: 使用两个指针分别指向队列的前和尾: 代码实现: 测试代码: 阅读全文
posted @ 2019-06-07 13:20 自由之翼Az 阅读(307) 评论(0) 推荐(0)
摘要:题目描述: 不使用比较排序,实现一个数组排序 时间复杂度O(N),额外空间复杂度O(N) 解题思路: 使用桶排序思维,申请一个额外数组,叫桶,用来记录数字出现的次数,然后输出即可,但桶排序一般适用于0-9的元素数字排序,因为此时桶只需申请0-9的空间,若array元素为999,则桶的空间至少得申请0 阅读全文
posted @ 2019-06-07 11:23 自由之翼Az 阅读(377) 评论(0) 推荐(0)
摘要:题目描述: 给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N) 解题思路: 使用两个指针:p1,p2 p1 = -1; //左指针,在p1左边并含p1的所有数都<num p2 阅读全文
posted @ 2019-06-07 10:36 自由之翼Az 阅读(392) 评论(0) 推荐(0)
摘要:题目描述: 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 输入描述: 输入为一行,n(1 ≤ n ≤ 1000) 输出描述: 输出一个整数,即题目所求 示例1 输入 10 输出 2解题思路: 能被5(5^1)整除的提供1个0 能被 阅读全文
posted @ 2019-06-04 23:23 自由之翼Az 阅读(392) 评论(0) 推荐(0)
摘要:使用Graham扫描法进新解决最小凸包问题 先找到最左下端点 然后根据极角来进行逆时针排序 在根据相对极角增减来去除不需要的点 C++代码 MATLAB代码 阅读全文
posted @ 2019-04-10 14:20 自由之翼Az 阅读(1366) 评论(0) 推荐(0)
摘要:算法提出: 在国际象棋棋盘上(8*8)放置八个皇后,使得任意两个皇后之间不能在同一行,同一列,也不能位于同于对角线上。问共有多少种不同的方法,并且指出各种不同的放法。 算法思路: 首先我们分析一下问题的解,我们每取出一个皇后,放入一行,共有八种不同的放法,然后再放第二个皇后,同样如果不考虑规则,还是 阅读全文
posted @ 2019-03-15 20:46 自由之翼Az 阅读(249) 评论(0) 推荐(0)
摘要:汉诺塔问题是一个递归的经典问题。 问题描述: 有x,y,z三根柱子,在x柱子上有按照大在下,小在上的规则,放着64个套筒,现在要将64个套筒借助柱子y移到柱子z上,且每次只能移动一个套筒,每个柱子上的套筒每时每刻只能按照大套筒在下面,小套筒在上面的规则放着,请问一共要移动多少次才能完成该项任务? 解 阅读全文
posted @ 2019-03-15 19:11 自由之翼Az 阅读(509) 评论(0) 推荐(1)
摘要:1.排列:全排列n! 使用next_permutation函数 输入任意一个字符串,输出其字典序的全排列 递归法 设一组数p = {r1, r2, r3, … ,rn}, 全排列为perm(p),pn = p – {rn}。则perm(p) = r1perm(p1), r2perm(p2), r3p 阅读全文
posted @ 2019-03-15 16:34 自由之翼Az 阅读(484) 评论(0) 推荐(0)