算法
钰钰钰钰帝
学习永无止境
展开
-
剑指offer面试题(41-50)——java实现
面试题整理(自用)面试题41:和为s的两个数字&和为s的连续整数序列面试题41:和为s的两个数字&和为s的连续整数序列1.输入一个递增的数组和一个数字s,在数组中找到和为s的两个数字 如果有多对数字的和,输出任意一对即可public class TwoNumberSumIsS { public static void getTwoNumberSumIsS(int[] array, int s){ if (array == null || array.len原创 2020-10-01 19:13:14 · 510 阅读 · 0 评论 -
剑指offer面试题(31-40)——java实现
面试题整理(自用)面试题31:连续子数组的最大和面试题32:从1到n整数中1出现的次数面试题31:连续子数组的最大和public class SubArrayMaxSum { public static int getSubArrayMaxSum(int[] array){ if (array == null || array.length == 0) return 0; int current = 0, result = Integer.MIN_VALUE;原创 2020-09-27 17:09:33 · 199 阅读 · 0 评论 -
剑指offer面试题(21-30)——java实现
面试题整理(自用)面试题21:包含min函数的栈面试题22:栈的压入、弹出序列面试题23:从上往下打印二叉树面试题24:二叉搜索树的后序遍历面试题25:二叉树中和为某一值n的路径面试题26:复杂链表的复制面试题27:二叉搜索树与双向链表面试题28:字符串的排列面试题21:包含min函数的栈定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。思路:使用辅助栈保存栈中的最小元素在栈顶import java.util.Stack;public class ContainMinFu原创 2020-09-23 22:02:52 · 141 阅读 · 0 评论 -
剑指offer面试题(11-20)——java实现
面试题整理(自用)面试题11:数值的整数次方面试题12:打印1到最大的n位数面试题13:在O(1)时间删除单向链表的节点面试题14:调整数组顺序使奇数位于偶数前面面试题15:链表中倒数第k个节点面试题16:反转链表面试题17:合并两个排序的链表面试题18:树的子结构面试题19:二叉树的镜像面试题20:顺时针打印矩阵面试题11:数值的整数次方思路1:考虑要全面,负数怎么办?是0怎么办?public class NumberPowerN { public static double manageR原创 2020-09-21 23:25:03 · 115 阅读 · 0 评论 -
剑指offer面试题(1-10)——java实现
面试题整理(自用)面试题2:实现singleton模式面试题3:二维数组中的查找面试题4:替换空格面试题5:从尾到头打印链表面试题6:重建二叉树面试题7:用两个栈实现队列面试题8:旋转数组的最小数字面试题2:实现singleton模式设计模式常见面试题汇总singleton是单列模式,属于设计模式中的一种,设计模式总共有 23 种,总体来说可以分为三大类:1.创建型模式( Creational Patterns ):关注于对象的创建,同时隐藏创建逻辑工厂模式、抽象工厂模式、单例模式、建造者模式、原原创 2020-09-21 10:52:37 · 172 阅读 · 0 评论 -
java提取字符串中的多个多位数
这个方法是基于中缀表达式,转换为后缀表达式的,所以是从后往前遍历,可能我也写麻烦了,但是实在写不出其他的方法了import java.util.ArrayList;import java.util.List;public class GetNumberInString { public static List getNumberInString(String str){ List result = new ArrayList(); for (int i = 0原创 2020-07-04 20:56:44 · 1270 阅读 · 0 评论 -
java排序——冒泡、归并、选择、插入
归并排序的思想:分而治之——首先将数组分为两半递归排序,然后合并有序子序列(参考邓俊辉老师的课程)1.mergeSort public static void mergeSort(int[] array, int low,int high){ if (high - low < 2) return;//递归基 int middle = (low + high) >> 1;//一分为二 mergeSort(array, low, mi原创 2020-07-03 18:12:24 · 174 阅读 · 0 评论 -
java使用递归找出数组中最大的两个数
一开始的方法定义为如下所示:但是由于java是传值的,所以使用int类型的数在递归时总是不会改变,导致最终的失败public static void findTwoLargest(int[] array, int low, int high, int oneLargestIndex, int twoLargestIndex);后来我使用数组来保存最大数和第二大数的下标,最终成功 /** * @param array 目标数组 * @param low 最小下标 *原创 2020-07-03 13:19:48 · 1425 阅读 · 0 评论