![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 81
shala_angela
永不放弃!的业余划水~~
展开
-
code(03)
一、输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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. public ArrayList printMatrix(int [][] matrix) {原创 2018-01-14 18:02:34 · 202 阅读 · 0 评论 -
leetcode(01)
一、给定两个字符串A和B,找到A必须重复的最小次数,使得B是它的一个子字符串。 如果没有这样的解决方案,返回-1。 例如,用A =“abcd”和B =“cdabcdab”。 返回3,因为通过重复三次("abcdabcdabcd"),B是它的一个子串; 而B不是重复两次的子串("abcdabcd"). 注意:A和B的长度在1到1000之间public st原创 2018-01-06 17:43:17 · 189 阅读 · 0 评论 -
二分查找及其变形
一、把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 方法一:O(n) public int minNumberInRotateAr原创 2018-01-12 14:49:40 · 259 阅读 · 0 评论 -
code(05)
一、荷兰国旗问题。将由0,1,2 三个数字组成的数组顺序排列。 扩展问题:将数组中的第一个元素,比它小的放在左边,相等的放在中间,大于的放在后边。 解法:时间复杂度O(n). 我们的思路如下:将前部和后部各排在数组的前边和后边,中部自然就排好了。具体的: 设置两个标志位begin和end分别指向这个数组的开始和末尾,然后用一个标原创 2018-01-25 18:28:41 · 167 阅读 · 0 评论 -
dp(1)
一、上台阶问题,一次要么上一个要么上两个,那么去第n个台阶总共有多少种不同的方法? dp[i] 去第i个台阶时共有多少种方法 状态转移方程:dp[i] = dp[i - 1] + dp[i - 2] public int climbStairs01(int n){ //递归 return climb_Stairs(0,n); } public int climb_St...原创 2018-01-02 19:05:42 · 291 阅读 · 0 评论 -
code(02)--内排序方法思想
一、输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 方法1:时间复杂度O(n),空间复杂度O(n) public void reOrderArray(int [] array) { ArrayList<Integer> list=new A...原创 2018-01-12 20:43:54 · 265 阅读 · 0 评论 -
code(二分+快排)
一、数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 方法1:出现次数超过一半的数字意味着该数组有序时这个数字应该在正中间位置 (array.length/2),可以用快排的思想来寻找该下标位置,缩小快排的寻找区间可...原创 2018-01-15 13:12:51 · 185 阅读 · 0 评论 -
code(04)
一、把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 方法一:常规想法,从1开始挨个判断下一个是不是丑数,丑数的判断标准:整除2整除3整除5 之后最后为1 方法二:进行优化过后,每一个丑数都是由之前的某一个丑数*2或3或5得到,所以找到前...原创 2018-01-17 12:23:47 · 282 阅读 · 0 评论