算法
JAVA菜鸟程序员
不要在该奋斗的年纪选择了安逸,只有度过了一段连自己都被感动的日子,才会变成那个最好的自己。
展开
-
【算法】一组数组中,有两种数有奇数个,其他的数都是偶数个
题目:一个数组中,只有两种数有奇数个;其他的数都是偶数个;找出这两种奇数个数的数字 public static void main(String[] args) { int[] arr = {1,1,1,5,5,5,5,6,6,6,9,9,9,9}; twoOddNumber(arr); } private static void twoOddNumber(int[] arr) { //通过异或操作,计算出两种奇数个数的数字的...原创 2022-01-08 10:11:03 · 495 阅读 · 0 评论 -
【算法】两数之和
题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2:输入:nums原创 2022-01-06 17:22:26 · 145 阅读 · 0 评论 -
【算法】计算一个数对应的二进制数中1的个数
题目:计算一个数字对应的二进制数中1的个数/** * 计算一个数对应的二进制数中1的个数 * @param n * @return */ public static int bit1counts(int n){ int counts = 0; while (n !=0){ // n = 10001000 //rightOne = 00001000原创 2021-12-31 18:17:39 · 233 阅读 · 0 评论 -
【算法】找出数组中有奇数个数的数
题目:一个数组中,只有一个数有奇数个,其他的数都是偶数个;找出奇数个的那个数字public static void main(String[] args) { int[] arr = new int[]{2,6,2,3,3,4,4}; int eor = 0; for (int i = 0; i < arr.length; i++) { eor ^= arr[i]; } System.out.原创 2021-12-31 18:11:10 · 1005 阅读 · 0 评论 -
Java设计模式-适配器模式
1 初步认识适配器模式的定义 将一个类的接口转成客户期望的另外一个接口。适配器模式使得原本由于接口不匹配而不能一起工作的那些类可以一起工作。大白话 适配器模式就像旅行插座转换器(图1)、Type-c转VGA转接口(图4)一样。 图1. 图片来源网络 ...转载 2020-01-14 11:28:04 · 250 阅读 · 0 评论 -
java算法-快速排序
一、思想该算法在数组中选择一个主元将数组一分为二。使得第一部分中的元素都小于或等于主元,第二部分中的元素都大于主元。然后对第一部分递归应用快速排序算法,对第二部分递归的应用快速排序算法。不过快速排序每次划分都将主元放在了恰当的位置,因为主元的选择直接影响了算法的性能。在理想的情况下,应该选择能平均划分两部分的主元。二、图解三、代码实现 public static void q...原创 2020-01-06 15:07:55 · 224 阅读 · 0 评论 -
java算法-插入排序
一、原理插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。动图演示:二、代码 publ...原创 2020-01-04 12:13:37 · 168 阅读 · 0 评论 -
java算法-冒泡排序
一、冒泡排序原理比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。动态图:二、代码...原创 2020-01-04 10:59:44 · 103 阅读 · 0 评论 -
java算法-二分查找算法
一、二分查找算法思想又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。二、图示说明三、二分查找优缺点优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序...原创 2020-01-03 15:21:46 · 421 阅读 · 0 评论