// ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <vector> #include <list> #include <deque> #include <string> #include <algorithm> using namespace std; class Long…
题目: 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度为O(N),且要求不能用非基于比较的排序 public static int maxGap(int nums[]) { if (nums == null || nums.length < 2) { return 0; } int len = nums.length; int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for (int i = 0; i < l…
题目描写叙述: 一个无序的实数数组a[i].要求求里面大小相邻的实数的差的最大值.比方 double a[]={1,5,4,0.2,100} 这个无序的数组,相邻的数的最大差值为100-5=95. 题目分析:这题有个简单的做法.首先就是对数组进行一个排序.然后扫面一遍数据就能够得到结果.但时间复杂度依赖于排序时间复杂度,一般为O(nlog n). 然而一般面试官会让给出一个线性空间和线性时间复杂度的算法.这时就用到了桶排序的思想. 解题思路 解题步骤例如以下: 扫面一遍数组.找到数组中的最大ma…
第一种方法: 计数排序后,然后找出两两之间的最大差值 计数排序的时间复杂度是O(N) public class CountSort { public static void main(String[] args) { , , , , , , , , }; sort(arr); Arrays.stream(arr).forEach(x -> System.out.print(x + " ")); //计算出相邻两个元素的最大差值 int maxGap = Integer.MIN_V…
把一个长字符串分解成若干个固定长度的短字符串,由于事先不知道长字符串的长度,以及短字符串的数量,只能使用List. public static void get_list_sbody(String s){ // 计数变量 int num = 0; // 每行的字符数 int r_num = 27; // 字符串 String sx = new String(""); lst_sbody = new ArrayList(); char[] cr =s.toCharArray(); for…
抛出问题: 求给定数组任意组合等于一个定值的所有解 例如列表l = [1, 2, 3, 4, 5],求任意组合的结果为10的所有答案 问题分析: 实际就是列表的所有排列组合,然后算出每个排列组合的值,记录等于所求值的组合结果. 代码实现就是先生成和 l 等长的全0列表,0表示,列表该位置数不取,1表示列表该位置数取,就这样一直递归,一直到全1 # -*- coding:utf-8 -*- # 日期:2018/6/11 7:30 # Author:小鼠标 # 求给定数组任意组合等于一个定值的所有解…
题目从这儿看到的 : https://mp.weixin.qq.com/s/2OXg67MfBuQjDPAJxxD8rQ,但是公众号上讲错了,问题还挺严重的. 题目知识点:桶排序. 题目:有一个无序数组2,3,1,4,6,排序后是1,2,3,4,6,最大差值是 6 - 4 = 2. 先找到数组的max和min. 创建一个长度为N+1的桶,前N个桶,(max-min)/N得到范围,左闭右开,最后一个桶只存储最大值. 除去第一个和最后一个,也就是N-1个数往N个桶里放,那么至少会有一个桶为空.(鸽笼…
标题可能比较绕口,简单点说就是给你一个无序数列A={a1,a2,a3……an},如果你把这个序列排序后变成序列B,求序列B中相邻两个元素之间相差数值的最大值. 注意:序列A的元素的大小在[1,2^31-1]之间 首先,因为要O(n)查找,你不能对序列A进行排序. 不过我们有显而易见的一个结论那就是最大差值,肯定大于平均差值 而序列的平均差值avg=(MAX(ai)-MIN(ai))/n-1 这个结论有啥用呢? 答:可以用来分块,我以avg为块长把n个元素用映射函数f(x)=(x-MIN(a[i]…
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 41548 Accepted: 19514 Case Time Limit: 2000MS Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John de…
思路:这题下午搞了然后一直WA,后面就看了Discuss,里面有个数组:ABCDEFDCBA,这个我输出ABCD,所以错了. 然后才知道自己写的后缀数组对这个回文子串有bug,然后就不知道怎么改了. 然后看题解,里面都是用RMQ先预处理随意两个后缀的最长公共前缀,由于不太知道这个,所以又看了一下午,嘛嘛-- 然后理解RMQ和后缀一起用的时候才发现事实上这里不用RMQ也能够,仅仅要特殊处理一下上面这个没过的样例即可了,哈哈--机智-- 解法一: 这个是不用RMQ做的: #include<iostr…