arr

1200. 最小绝对差

只愿长相守 提交于 2020-01-28 20:58:07
解题思路: 1.对数组排序 2.min记录当前最小绝对差,初始值为arr[1]-arr[0]; 3.队列queue存储最小绝对差的元素对,初始化为queue.add(arr[0]); queue.add(arr[1]); 4.遍历数组,如果遇到比min还要小的值,则先将队列清空,并将新的最小绝对差的元素对入队列 5.如果当前元素对的绝对差就是min,则将最小绝对差的元素对入队列 6.将队列中的元素依次存入存入List中 时间复杂度O(k*n) 空间复杂度O(n) 代码实现: class Solution { public List<List<Integer>> minimumAbsDifference(int[] arr){ Arrays.sort(arr);//数组从小到大排序 Queue<Integer> queue=new LinkedList<>();//存储最小绝对差的元素对 int min=arr[1]-arr[0];//最小绝对差 queue.add(arr[0]); queue.add(arr[1]); for(int i=2;i<arr.length;++i){ if(arr[i]-arr[i-1]<min){//更新最小值 min=arr[i]-arr[i-1]; //队列清空 if(!queue.isEmpty()){ queue.clear(); } /

多异常的捕获方式以及自定义异常类

隐身守侯 提交于 2020-01-28 17:05:18
多异常的写法以及自定义异常类 1.多异常的三种捕获方式及注意事项: public static void main ( String [ ] args ) { //1 try { int [ ] arr = { 1 , 2 , 3 } ; System . out . println ( arr [ 3 ] ) ; } catch ( ArrayIndexOutOfBoundsException e ) { e . printStackTrace ( ) ; } try { List < Integer > integers = List . of ( 1 , 2 , 3 ) ; System . out . println ( integers . get ( 3 ) ) ; } catch ( IndexOutOfBoundsException e ) { e . printStackTrace ( ) ; } System . out . println ( "+++++++++++++++" ) ; //2.当catch中捕获的异常变量有子父类关系时,子类先写在上面,否则报错 try { int [ ] arr = { 1 , 2 , 3 } ; System . out . println ( arr [ 3 ] ) ; List < Integer > integers

js(五、js中内置对象)

我与影子孤独终老i 提交于 2020-01-28 16:15:07
js内置对象 js里已经定义好的对象,有现成的属性和方法供我们使用。 js中共有17个内置对象: 声明变量类型 var carname = new String ; var x = new Number ; var y = new Boolean ; var cars = new Array ; var person = new Object ; 1. Array对象: (一、)以下可以直接修改原数组: (1.)length:得到数组长度。 (2.)push(你要追加的元素):向数组的结尾追加元素。 (栈方法后进先出) (3.)pop():删除数组最后一位元素。 (栈方法后进先出) (4.)unshift():向数组的开头添加元素。 (队列方法先进先出) (5.)shift():删除数组的第一位元素。 (队列方法先进先出) (6.)reverse():反转数组,用于颠倒数组中的元素。 (7.)splice(起始元素,删除元素数量,添加的元素)用于删除,插入,替换数组中的元素。 ```javascript var arr=["窝窝头","四个","烤红薯","煎饼果子"]; arr.splice(1,0,"一块钱"); console.log(arr); // ["窝窝头", "一块钱", "四个", "烤红薯", "煎饼果子"] 从1开始,在arr[0]元素后加入"一块钱"。

简单选择排序

…衆ロ難τιáo~ 提交于 2020-01-28 11:06:12
/** * 选择排序(Selection sort)是一种简单直观的排序算法。 * 它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置, * 然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 * 以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。 * @param args */ public static void main(String[] args) { int[] arr={49,38,65,97,76,13,27,49,78,34,12,64,1}; for (int i = 0; i < arr.length - 1; i++) { int min = i; for (int j = i + 1; j < arr.length; j++) { if (arr[min] > arr[j]) { min = j; } } if (min != i) { int tmp = arr[min]; arr[min] = arr[i]; arr[i] = tmp; } } } 来源: CSDN 作者: dalong_bamboo 链接: https://blog.csdn.net/dalong_bamboo/article/details/103800189

数组中只出现一次的数字--python

安稳与你 提交于 2020-01-28 09:49:34
#一个整型数组中除了两个数字之外,其他数字都出现了两次。找到这个两个只出现一次是数字。要求时间复杂度O(n),空间复杂度O(1) #思路1:字典,以数组中的数字为键,出现次数为值,最后找到值为1对应的键 def findOnceNum ( arr ) : if len ( arr ) < 2 : return None dict , res = { } , [ ] for i in arr : dict [ i ] = dict . get ( i , 0 ) + 1 for key in dict : if dict [ key ] == 1 : res . append ( key ) return res #思路2:异或思想,任何一个数字异或它自己都是0 #用异或求解。异或运算的性质:任何一个数字异或它自己都等于0 。如果数组中只有一个数字出现过一次,其余数字都出现了两次;这样的话如果我们从头到尾依次异或数组中的每一个数字, # 那么最终的结果刚好是那个只出现一次的数字,因为那些出现两次的数字全部在异或中抵消掉了。如果能够把原数组分为两个子数组,在每个子数组中,包含一个只出现一次的数字, # 而其它数字都出现两次。在两个子数组中分别求出这两个只出现一次的数字。 还是从头到尾依次异或数组中的每一个数字,那么最终得到的结果就是两个只出现一次的数字的异或结果。 #

lodash入门使用

安稳与你 提交于 2020-01-28 08:09:38
之前有常看到lodash,但是一直没有详细了解,也没有用,现在有时间可以认真看下了。 好多东西都是,没了解没入门都会觉得应该不会那么容易上手,然后就暂时放置,然后安于原来熟悉的开发方式了,还是一个字 —— 懒。 可能尝试一件新事物并没有想象中那么地花费时间和精力, 坚持一个好的习惯也没有想象中那么的艰难~ ——————————————————————————————————————————————— lodash是一个旨在提高开发效率和javascript原生方法性能的js原生库,像jquery一样,这里封装了很多字符串、数组、对象等常见数据类型的处理函数。 以下列举以下平时应用场景较多的几种,方便后期用到: 详细参考: lodash官网 1.times循环 //js原生的循环方法 for ( var i = 0 ; i < 5 ; i ++ ) { console . log ( i ) ; } ; //ladash的times方法 this . $lodash . times ( 5 , function ( item ) { console . log ( item ) ; } ) 2.chunk - 切分数组 将数组按照一定长度切分,返回新数组 const arr = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] ; let newArr =

js中数组常用方法总结

荒凉一梦 提交于 2020-01-28 00:25:08
操作数组 操作数组,印象中操作数组的方法很多,下面总结了一下数组中常用的几个方法: JavaScript中创建数组有两种方式 (一)使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组var arr2 = new Array(20); // 创建一个包含20项的数组var arr3 = new Array("lily","lucy","Tom"); // 创建一个包含3个字符串的数组 (二)使用数组字面量表示法: var arr4 = []; //创建一个空数组var arr5 = [20]; // 创建一个包含1项的数组var arr6 = ["lily","lucy","Tom"]; // 创建一个包含3个字符串的数组 数组的方法有数组原型方法,也有从object对象继承来的方法,这里我们只介绍数组的原型方法,数组原型方法主要有以下这些: join() push()和pop() shift() 和 unshift() sort() reverse() concat() slice() splice() indexOf()和 lastIndexOf() (ES5新增) forEach() (ES5新增) map() (ES5新增) filter() (ES5新增) every() (ES5新增) some() (ES5新增)

螺旋矩阵

帅比萌擦擦* 提交于 2020-01-27 16:18:24
export default (arr) => { // 处理每一圈的数据遍历过程 let map = (arr, r = []) => { for (let i = 0, len = arr.length; i < len; i++) { if (i === 0) { r = r.concat(arr[i]) } else if (i === len - 1) { r = r.concat(arr[i].reverse()) } else { r.push(arr[i].pop()) } } arr.shift() arr.pop() for (let i = arr.length - 1; i >= 0; i--) { r.push(arr[i].shift()) } if (arr.length) { return map(arr, r) } else { return r } } return map(arr, []) } 来源: https://www.cnblogs.com/ygjzs/p/12236073.html

JS快速排序算法

爱⌒轻易说出口 提交于 2020-01-27 15:12:51
快速排序算法是基于递归思想所设计的算法,每次排序设定一个标准值,排序完成后,让标准值的前面都是比它小,后面都是比它大的,直到每组只剩一个数。 其流程基本如下: (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。 (2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。 (3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。 (4)重复上述过程当左、右两个部分各数据排序完成后,整个数组的排序也就完成了 1 /********************************快速排序************************************************/ 2 3 function quickSort(arr) { 4 quickly(arr,0,arr.length - 1); //先追加几个参数 5 } 6 7 function quickly(arr,left,right) { 8 if (left >= right) { //做指针可能会比右指针大 9 return; //一旦相遇就递归终止 10 } 11 12 let

第六周作业

回眸只為那壹抹淺笑 提交于 2020-01-27 07:45:31
前言 这个作业属于哪个课程 C语言程序设计 这个作业的要求在哪儿 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/homework/2891 在这个课程的目标 指针 这个作业在哪些方面帮助我 如何定义指针变量,怎样使用指针变量 参考文献 教材 C语言程序设计 6-1 求两数平方根之和 (10 分) 函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。 函数接口定义: double fun (double a, double b); 其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。 裁判测试程序样例: include<stdio.h> include <math.h> double fun (double a, double b); int main ( ) { double a, b, y; scanf ("%lf%lf", &a, &b ); y=fun(&a, &b); printf ("y=%.2f\n", y ); return 0; } /* 请在这里填写答案 */ 输入样例: 12 20 输出样例: y=7.94 1.编程代码 double fun (double *a, double