查找与排序(上)
最白の白菜
Java道路长漫漫,坚持学习最关键。
人生苦短,我用Python。
人外有人,山外有山。越努力,越幸运!
展开
-
Exam12_TwoSum
文章目录题目输入输出样例输入样例输出我的代码最后一谈 题目 时间限制:4000ms 单点时限:1000ms 描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要输出这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1。 你可以假设数组递增有序。 请在O(N)时间内完成。 输入 第一行:N个整数,作为数组的元素,空格分开 第二行:tar...原创 2020-03-24 19:35:27 · 133 阅读 · 0 评论 -
Exam11_FindInRotaryArr
文章目录题目输入输出我的代码 题目 时间限制:4000ms 单点时限:1000ms 描述 输入一个递增排序的数组(元素不重复)的一个旋转(次数不详),找出某个元素. 输入 第一行:N,数组的长度 第二行:N个整数,作为数组的元素,空格分开 第三行:要查找的关键字K 输出 关键字K的下标,如果没有找到,输出-1 样例输入 5 6 1 2 3 4 1 样例输出 1 我的代码 解法一:...原创 2020-03-24 19:30:08 · 112 阅读 · 0 评论 -
Exam10_TheKthStep
文章目录题目输入输出 题目 时间限制:2000ms 单点时限:1000ms 描述 小明刚刚看完电影《第K级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是K级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚, 也就是说一共要走偶数步。那么,上完K级台阶,有多少种不同的上法呢? 请你利用计算机的优势,帮助小明寻找答案。 ...原创 2020-03-24 19:26:05 · 177 阅读 · 0 评论 -
快速设计一个高效的求a的n次幂的算法
文章目录题目普通算法改进算法 题目 快速设计一个高效的求a的n次幂的算法 普通算法 // 时间复杂度O(n) private static int pow0(int a, int n) { int res = 1; for (int i = 0; i < n; i++) { res *= a; } return res; } 改进算法 public class...原创 2020-03-23 17:02:26 · 719 阅读 · 0 评论 -
最长连续递增子序列
文章目录题目我的代码 题目 我的代码 public class 最长连续递增子序列 { /** * @param args */ public static void main(String[] args) { int[] a = {1,9,2,5,7,3,4,6,8,0}; int res = maxLen(a); System.out.println(res); ...原创 2020-03-23 16:59:00 · 130 阅读 · 0 评论 -
在有空字符串的有序字符串数组中查找
文章目录题目我的代码 题目 我的代码 public class 特殊有序数组中查找 { /** * @param args */ public static void main(String[] args) { String[] arr = { "a", "", "ac", "", "ad", "b", "", "ba" }; int res = indexOf(arr, ...原创 2020-03-23 16:57:01 · 140 阅读 · 0 评论 -
旋转数组的最小数字(改造二分法)
文章目录题目我的代码 题目 我的代码 public class 旋转数组的最小数字 { /** * @param args * 改造二分法 */ public static void main(String[] args) { int[] a = { 3, 4, 5, 1, 2 }; int res = min(a); System.out.p...原创 2020-03-23 16:54:41 · 133 阅读 · 0 评论 -
递归设计小白上楼梯
文章目录题目代码 题目 代码 import java.util.Scanner; public class 递归设计小白上楼梯 { /** * @param args */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt();...原创 2020-03-23 16:52:46 · 137 阅读 · 0 评论 -
浅谈时间复杂度
文章目录利用"大O表示法"评估算法复杂度大O简介常见函数的复杂度计算复杂度描述性能对比:顺序查找与二分查找基础排序法性能对比2的幂表希尔排序的性能玄机排序算法的稳定性 利用"大O表示法"评估算法复杂度 大O简介 常见函数的复杂度计算 复杂度描述 性能对比:顺序查找与二分查找 上上一篇文章中总结了顺序查找和二分查找的代码,下面是性能分析 顺序查找O(n) 二分查找O(lgn) 具体可以在函数中...原创 2020-03-19 21:25:20 · 118 阅读 · 0 评论 -
思维更重要:希尔排序
希尔排序简介思路我的代码 简介 希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序 思路 /** * 希尔排序是插入排序的一种。<br/> * 也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法<br/> *<br/> * 思路:如序列 9 8 7 6 5 4 3 2 1<...原创 2020-03-19 20:20:24 · 87 阅读 · 0 评论 -
从顺序查找到二分查找转递归
目录分析我的代码 分析 全范围内二分查找 等价于三个子问题: 左边找(递归) 中间比 右边找(递归) 注意:左查找和右查找只选其一 我的代码 public class 二分查找的递归解法 { /** * @param args */ public static void main(String[] args) { ...原创 2020-03-19 19:39:44 · 92 阅读 · 0 评论 -
递归经典问题:汉诺塔游戏
汉诺塔游戏游戏介绍分析我的代码 游戏介绍 要求:符合游戏规则下,将N个盘子从source移动到target的路径的打印 分析 1~N从A移动到B,C作为辅助 等价于: 1、1~N-1从A移动到C,B为辅助 2、把N从A移动到B 3、1~N-1从C移动到B,A为辅助 我的代码 在这里插入代码片 ...原创 2020-03-18 21:57:34 · 174 阅读 · 0 评论 -
别有洞天:递归形式进行插入排序
目录分析我的代码总结 分析 /** * 对数组排序 * 等价于: * 对数组的0~倒数第二个元素,这部分排序 * 然后把最后一个元素插入到这个有序的部分中 */ 我的代码 public class 插入排序改递归 { /** * @param args */ public static void main(String[] args) { ...原创 2020-03-18 21:06:24 · 277 阅读 · 0 评论 -
简单的理解递归
简单的理解递归递归设计经验递归基础练习求阶乘打印i~j对数组的所有元素求和翻转字符串多分支递归:斐波那契数列巧用递推公式解最大公约数主函数 递归设计经验 1.找重复(子问题) 2.找重复中的变化量-->参数 3.找参数变化趋势-->设计出口 递归基础练习 求阶乘 private static int f1(int n) { if (n == 1) { return ...原创 2020-03-18 20:38:36 · 94 阅读 · 0 评论