随笔分类 - 算法
摘要:/** * 1.给定数组int[] a,int[] b * (1)请找出数组a所有重复元素,例:int[] a = {1,2,3,4,8,9,3,5,1,3},结果int[] a1 = {1,1,3,3,3} * (2)比较数组a和数组b得到不重复的新数组,例:int[] a = {1,2,3,4,
阅读全文
摘要:解决问题的步骤就叫算法 有五个特征 可执行性 确定性 有穷性 有输入信息的说明 有输出信息的步骤 算法的描述方式 1.自然语言 2.选择结构 二分支选择 传承流程图 if(){}else{} N-S图 if(){}else{} P是判断的位置 多分支选择 if(){}else if(){}else
阅读全文
摘要:一.我的解法,思路在代码注释中 需求: 罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27
阅读全文
摘要:一.鄙人的解法 需求:回文数 这里写了三种解法 比较一半的方式来实现 回文数 要StringBuilder实现 回文数 转字符串方法实现 回文数 代码 思路 方法一:反转一半数字思路 映入脑海的第一个想法是将数字转换为字符串,并检查字符串是否为回文。但是,这需要额外的非常量空间来创建问题描述中所不允
阅读全文
摘要:一. 需求:整数反转 给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 图解: [方法二的图解] 示例 : 输入:x =
阅读全文
摘要:求子数组最大平均数[我的解法,思路在代码注释中] 官方的解法[下面有图解] 第二组和第一组之和比较最大值,结果是第二组51大 第3组和上组比较最大值51比较,明显结果还是51大 第4组和上组比较最大值51比较,明显结果还是51大 第5组和上组比较最大值51比较,明显结果还是51大 最后求子数组最大平
阅读全文
摘要:鄙人的解法 思路写在注释中 1 import java.util.HashMap; 2 import java.util.Map; 3 4 /** 5 * 算法:两数之和 6 * 7 * @author 王子威 8 * @date 2021/2/3 9 */ 10 public class Wzws
阅读全文
摘要:public boolean isValid(String userStr) { if(userStr.length() % 2 != 0){ return false; } //创建hashMap对象 HashMap<Character, Character> map = new HashMap<
阅读全文
摘要:二分查找【重点】 前提 数组必须有序 思路 1.只要开始索引大于结束索引,就代表数组中没有该值 2.中间索引位置元素大于目标值 修改结束索引等于中间索引减1 3.中间索引位置元素小于目标值 修改索引等于中间索引加1 4.中间索引位置元素等于目标值 返回索引 5.不确定循环次数 while 条件:开始
阅读全文
摘要:选择排序【重点】 思路: 1.将一个和所有元素进行比较,大的放后面,小的放前面 2.数组的长度为N,比较N-1轮 3.每一轮比较完成后,都可以得到了最小值,下一轮就不需要比较最小值 例图: 源码: 代码 public static void main(String[] args) { int[] a
阅读全文
摘要:冒泡排序【重点】 思路: 1.将相邻的两个元素进行比较,大的放后面,小的放前面 2.数组的长度为N,比较N-1轮 3.每一轮比较完成后,都可以得到了最大值,下一轮就不需要比较最大值 例图: 源码: 代码 public static void main(String[] args) { int[] a
阅读全文