
数组操作
AddoilDan
这个作者很懒,什么都没留下…
展开
-
找出数组中第二大的值
如何找出数组中的第二大数算法思路:方法1: 快速排序后根据数组下标获得数组中第二大的值方法2:(1)首先定义一个变量来存储数组的最大数,初始值为数组首元素;另一个变量用来存储数组元素的第二大数,初始值为最小负数 -32767,然后遍历数组元素。(2)如果数组元素的值比最大数变量的值大,则将第二大变量的值更新为最大数变量的值,最大数变量的值更新为该元素的值;如果数组元...原创 2018-07-17 11:33:11 · 10279 阅读 · 1 评论 -
如何计算两个有序整型数组的交集
问题描述:假设两个含有n个元素的有序(非降序)整型数组a和b,其中 a = { 0,1,2 ,3,4 }, b = { 1,3,5,7,9 }.那么他们的交集为{ 1,3 }实现思路:1)二路归并法:分别从i,j从头开始遍历两个数组。若当前遍历的位置a[i]==b[j],则次=此数为两个数组的交集,记录下来,并且继续向后遍历a1,b1.若a[i] > b[j] ,则继续向...原创 2018-09-03 17:23:05 · 949 阅读 · 0 评论 -
如何对数组中的两个子有序段进行合并
问题描述:数组a[0,mid-1]和a[mid,n-1]是各自有序的,对数组a[0,n-1]的两个子有序段进行合并,得到a[0,n-1]整体有序,要求空间复杂度为O(1)。假设数组中的两个子有序段都按升序排列。实现思路:1、插入排序方法,时间复杂度为O(n^2),空间复杂度为O(1)2、首先,遍历数组中下标为【0,mid-1】的元素,将遍历到的元素的值与a[mid]进行比较,如果...原创 2018-09-03 16:41:16 · 281 阅读 · 0 评论 -
如何求指定数字在数组中第一次出现的位置
问题描述:给定数组 a = { 3,4,5,6,5,6,7,8,9,8}, 这个数组相邻元素之差都为1, 给定数字9, 它在数组中第一次出现的位置下标为8实现思路:方法一:“蛮力”法,顺序遍历一遍数组中每一个元素,与9比较,时间复杂度为O(n)方法二:跳跃搜索法。首先用数组中第一个元素3与9进行比较,差值为6,由于相邻两个元素的差值为1,因此9在数组中出现最早的位置必定为:1+6 ...原创 2018-09-03 16:21:55 · 3713 阅读 · 0 评论 -
如何求数组中两个元素的最小距离
问题描述:一个数组,含有重复元素,给出两个数num1和num2,求这两个数字在数组中出现的位置的最小距离实现思路:遍历数组,更新下标,比较距离值复杂度:O(n)时间复杂度O(1)空间复杂度package JBArray;public class MinDistanse { private static int min(int a, int b){ retu...原创 2018-09-03 15:56:52 · 911 阅读 · 0 评论 -
如何求绝对值最小的数
问题描述: 有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。算法实现的基本思路:找到负数和正数的分界点,如果正好是0就是它了,如果是正数,再和左面相邻的负数绝对值比较,如果是负数,取取绝对...原创 2018-09-03 15:34:42 · 3493 阅读 · 0 评论 -
数组中唯一的元素
package JBArray;import org.omg.CORBA.INTERNAL;/** * 问题描述:数组a[N],1至N-1这N-1个数存放在a[N]中,其中某个数重复一次,写一个函数, 找出被重复的数字。 */public class xor_findDup { /** * 数字求和法 * 算法思路: * 对数据所有项求和 *...原创 2018-09-03 10:23:26 · 964 阅读 · 0 评论 -
找出数组中只出现一次的数字
问题描述: 一个整型数组里除了一个数字以外,其他数字都出现了两次。找出这个只出现一次的数字算法思路: * 异或运算:任何一个数字异或它本身都等于0, * 如果从头到尾异或数组中的每一个数字,那些出现两次的数字全部在异或中会被抵消, * 最终的结果刚好是这个只出现一次的数字package JBArray;/** * 找出数组...原创 2018-09-03 09:08:12 · 3236 阅读 · 0 评论 -
寻找数组中最大最小值
package JBArray;/** * 获得最大最小值 * @author Dan * */public class MaxMin { static int Max; static int Min; /** * 取单元素法 * @param arr */ public static void GetMaxMin...原创 2018-09-02 18:26:15 · 205 阅读 · 0 评论 -
如何求解数组中反序列的个数
思路描述:暴力求解归并法:O(nlogn)代码实现:package JBArray;import javax.xml.stream.events.StartDocument;public class ReverseCount { public static int reverseCount = 0; public static void merge(int[] a...原创 2018-09-04 10:14:02 · 226 阅读 · 0 评论 -
如何找出数组中第K个最小的值
算法思路:排序法:排序后数组中第K-1个位置上的数字剪枝法:采用快速排序的思想 1、选一个数tmp=a[n-1]作为枢纽,比它小的放左边比它大的放右边 2、判断tmp的位置 2.1 如果它的位置是k-1,那么它就是第k个最小的值 2.2 如...原创 2018-07-17 13:55:32 · 1940 阅读 · 0 评论 -
如何把一个数组右移K位
算法思路:实现右移K位 例如12345678 1、逆序数组子序列78 数组形式变为12345687 2、逆序数组子序列123456 数组形式变为 65432187 3、全部逆序 数组形式变为78123456实现逆序的方...原创 2018-07-17 13:32:54 · 1690 阅读 · 0 评论 -
如何求数组中两两相加等于20的组合种数
算法思路:蛮力法:两重遍历判断两个数组的和是否是20排序法:1、先对数组进行排序 O(nlogn) 2、对排序后的数组分别从前往后和从后往前遍历,假设从前往后遍历的下标是begin,从后往前遍历的下标是end 2.1 当满足 arr[begin]+arr[end]<20时,那么这两个数一定在[begin+1,en...原创 2018-07-17 13:26:08 · 740 阅读 · 0 评论 -
找出数组元素中重复元素最多的数
算法思路: 使用Map映射表存放每一个数据及出现的次数 再判断次数大小,进而找出重复次数最多的数 Map取数据常用方法: 1、先拿到当前map所有的key 根据key迭代出所有的valueSet<Integer> set = map.keySet(); Iterator<Integer> it = set.iterato...原创 2018-07-17 13:10:31 · 1808 阅读 · 0 评论 -
最大子数组的和并确定子数组的位置 数对之差的最大值
求最大子数组之和蛮力法:算法思路:找出所有子数组,然后求出子数组的和然后,在所有子数组的和中取最大值时间复杂度:O(n^3) 优化后O(n^2)代码实现: /** * * 暴力法求最大子数组的和问题 * 时间复杂度n(n^3) * @return */ public static int maxSubArray(...原创 2018-07-17 12:50:47 · 275 阅读 · 0 评论 -
如何判断一个数组中数值是否连续相邻
问题描述:一个数组序列,元素取值可能是0--65535中的任意一个数,相同数值不会重复出现。0可以重复出现。当从该数组序列中随机选取5个数值,判断这5个数值是否连续相邻。需要注意4点: 1.) 5个数值允许是乱序的,例如{8,7,5,0,6} 2.) 0可以通配任意数值,例如{8,7,5,0,6}中的0可以通配成9或4 3. )0可以多次出现 4. )全0算连续,只有一个非0算连续...原创 2018-09-03 17:31:58 · 6856 阅读 · 0 评论