数组

1. 数组可以存放多个同一类型数据。数组也是一种数据类型,是引用类型。
即:数组就是一组数据。

快速入门数组

//1.存储一个班6个人的成绩,并输出每个人的成绩
import java.util.Scanner;/*** @author Hwang* @create 2020-06-29 15:02*/
public class ArrayTest {public static void main(String[] args) {double[] scores=new double[6];Scanner sc = new Scanner(System.in);for (int i = 0; i < scores.length; i++) {System.out.print("请输入第"+(i+1)+"个人的成绩: ");scores[i]=sc.nextDouble();}for (int i = 0; i < scores.length; i++) {System.out.println("第"+(i+1)+"个人的成绩为: "+scores[i]);}}
}

数组的使用方式

使用方式1-动态初始化
1.数组的定义
数据类型 数组名[] =new 数据类型[大小]
int  a[] = new int[5];//创建了一个数组,名字a,存放5个int使用方式2-静态初始化
1. 初始化数组语法:
数据类型[] 数组名={元素值,元素值...}
知道数组有多少元素,具体值,使用静态初始化
//1.循环输入5个成绩并输出
public class ArrayTest {public static void main(String[] args) {double[] scores=new double[6];//数组存储6个人的成绩Scanner sc = new Scanner(System.in);for (int i = 0; i < scores.length; i++) {System.out.print("请输入第"+(i+1)+"个人的成绩: ");scores[i]=sc.nextDouble();//从键盘输入成绩}for (int i = 0; i < scores.length; i++) {System.out.println("第"+(i+1)+"个人的成绩为: "+scores[i]);//遍历输出每个学生的成绩}}
}

细节

1. 数组是多个相同类型数据的组合,实现对这些数据的统一管理2. 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。3. 数组创建后,如果没有赋值,有默认值int   0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false,String null4. 使用数组的步骤 :1. 声明数组并开辟空间   2 .给数组各个元素赋值  3 .使用数组5. 数组的下标是从0开始的。6. 数组下标必须在指定范围内使用,否则报:下标越界异常,比如 int [] arr=new int[5]; 则有效下标为 0-47. 数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量
class ArrayDetail{}

数组的应用案例

/*1.* 创建一个char类型的26个元素的数组,分别 放置'A'-'Z‘。* 使用for循环访问所有元素并打印出来。提示:char类型数据运算* 'A'+1 -> 'B','0'+1 -> '1‘* */char[] varg = new char[26];for (int i = 0; i < varg.length; i++) {varg[i] = (char) ('A' + i);}for (int i = 0; i < varg.length; i++) {System.out.print(varg[i] + "\t");}***********************************************************************************************/*2.* 请求出一个数组的最大值,并得到对应的下标。* */int maxIndex=0;//默认最大值的是数组的第一个元素 所以其下标默认为0Scanner sc = new Scanner(System.in);int []arr=new int[5];for (int i = 0; i < arr.length; i++) {System.out.print("请输入第"+(i+1)+"个数据: ");arr[i] = sc.nextInt();}int a[]={1,2,3};int max=arr[0];//默认的最大值for (int i = 1; i < arr.length; i++) {if(arr[i]>max){max=arr[i];//这个数大于默认的最大值,则将该数覆盖掉最大值maxIndex=i;//并且将该索引覆盖掉}}System.out.println("max: "+max);System.out.println("maxIndex :"+maxIndex);

数组复杂使用-赋值

1. 基本数据类型赋值,这个值就是具体的数据,而且相互不影响。
2.  数组在默认情况下是引用传递,即赋的值是地址。
int [] arr=new int[6];     //arr就是引用

引用赋值的图解与代码

public class ArrayApply
{public static void main(String[] args) {int[] arr1 = {1,2,3};int[] arr2 = arr1;arr1[0] = 666;System.out.println(arr1[0]); // 666System.out.println(arr2[0]); // 666//修改其中一个数组的元素值,另外一个数组元素的值也会跟着修改}
}

数组拷贝(内容复制)图解与代码

/*** @author Hwang* @create 2020-06-29 19:17*/
public class ArrayCopy {public static void main(String[] args) {int[] arr= {1,2,3,4,5,6};int[] newArr=new int[arr.length];for (int i = 0; i < newArr.length; i++) {newArr[i]=arr[i];//内容复制给另外一个数组,两个数组的地址不一样}arr[0]=100;//修改旧的数组不会修改新的数组System.out.println("newArr[ "+0+" ] "+newArr[i]);//1System.out.println("arr[ "+0+" ] "+arr[i])//100}
}

数组的复杂使用

数组反转

//    reverse反转
//1.方式1:通过找规律反转 【思路分析】 //{1,2,3,4,5}
//2.方式2:使用逆序赋值方式 【思路分析】
//方式1:int [] newArr=new int[arr.length];int temp;for (int i = 0; i <arr.length/2; i++) {//arr.length 数组元素的个数,交换次数 arr.length  / 2;//数组元素单个时:取得是中间索引的元素//数组元素双数时:两边的元素对称//i起始指向最前面的那个元素  arr.length-1-i起始指向最后面的那个元素//交换模块temp=arr[arr.length-1-i];//arr.length-1-i可以看作每循环一次指针从后往前移一次arr[arr.length-1-i]=arr[i];//i可以看作每循环一次指针从前往后移一次arr[i]=temp;}//遍历模块for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}

数组添加【扩容】

        //单次增加Scanner sc = new Scanner(System.in);System.out.print("输入添加的数: ");int addNum=sc.nextInt() ;int [] newArr=new int[arr.length+1];for (int i = 0; i <=arr.length-1; i++) {// i <=arr.length-1不要忘记等号啊newArr[i]=arr[i];}newArr[newArr.length-1]=addNum;arr=newArr;//将旧数组的引用指向新数组的引用for (int i = 0; i <= arr.length-1; i++) {//i <=newArr.length-1不要忘记等号啊System.out.println("newArr"+"["+i+"]: "+newArr[i]);}***********************************************************************//    循环增加boolean flag=true;char answer;do {Scanner sc = new Scanner(System.in);System.out.print("输入添加的数: ");int addNum=sc.nextInt() ;int [] newArr=new int[arr.length+1];for (int i = 0; i <=arr.length-1; i++) {// i <=arr.length-1不要忘记等号啊newArr[i]=arr[i];}newArr[newArr.length-1]=addNum;arr=newArr;for (int i = 0; i <= arr.length-1; i++) {//i <=newArr.length-1不要忘记等号啊System.out.println("arr"+"["+i+"]: "+newArr[i]);}System.out.print("添加成功,是否继续?y/n: ");answer = sc.next().charAt(0);if(answer=='n'){flag=false;}else if(answer=='y'){flag=true;}else {System.out.println("输入的数据有误...");flag=false;}}while(flag);}
}

数组添加(指定位置添加)

//int[] arr = {1,2,3,4,5}
//思路一
//添加 999 加入到 index = 1
(1) int[] arrNew = {0,0,0,0,0,0}
(2) 遍历 arrNew = {1,2,3,4,5,0}
(3) 后移 arrNew = {1,2,2,3,4,5} //非常耗时的
(4) arrNew[1] = 999  => {1,999,2,3,4,5}//思路二:【比较优秀】
//添加 999 加入到 index = 1
(1) int[] arrNew = {0,0,0,0,0,0}
(2) 遍历 arrNew =  {1,0,2,3,4,5}
(3) arrNew[1] = 999  => {1,999,2,3,4,5}//代码过程
//先写一次插入的//加入循环,给定条件既可以退出
//加入一个判断用户输入的下标是否合理的处理,如果不合理,给出提示信息
import java.util.Scanner;/*** @author Hwang* @create 2020-06-29 21:10*/
public class Arrayadd2 {public static void main(String[] args) {int[] arr = {1, 2, 3};Scanner sc = new Scanner(System.in);/*比如在i=1位置插入66* 1.新建一个新数组* 2.遍历旧数组* 3.赋值到新数组* .判断插入位置的索引和新数组的索引相等不相等* .如果相等就跳过去* .** */boolean flag = true;do {System.out.print("请输入要插入的位置: ");int index = sc.nextInt();System.out.print("请输入要插入的元素: ");int addNum = sc.nextInt();int[] newArr = new int[arr.length + 1];for (int i = 0, j = 0; i < newArr.length; i++) {//把i,j看成是"指针",i初始值指向新数组的第一个元素// i初始值指向新数组的第一个元素if (i != index) {newArr[i] = arr[j];j++;}}newArr[index] = addNum;//增加元素到指定位置arr = newArr;//让arr 指向扩容后的数组//遍历for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}//用户判断System.out.print("是否还需要插入元素:y/n: ");char c = sc.next().charAt(0);if (c == 'n') {flag = false;}} while (flag);}
}

数组添加变形

/*已知有个排序好(升序)的数组,要求插入一个元素,
最后打印该数组,顺序依然是升序 【10, 12, 45, 90】 23 【10, 12,23, 45, 90】*/

排序[重点1]

排序介绍

1. 排序是将一群数据,依指定的顺序进行排列的过程。2. 分类
①内部排序:  指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法);
②外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。3. 交换式排序法:交换式排序属于内部排序法,是运用数据值比较后,依判断规则对数据位置进行交换,以达到排序的目的。
4. 交换式排序法又可分为两种:①冒泡排序法(Bubble sort)②快速排序法 (Quick sort)

冒泡排序

冒泡排序概述

 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就象水底下的气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,
就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。
从而减少不必要的比较。

冒泡排序原理图

冒泡排序代码实现

冒泡排序代码实现步骤
//24,69,80,57,13
/*** @author Hwang* @create 2020-06-30 20:26*/
public class BubbleSort {public static void main(String[] args) {/** 往上冒泡* *///24,69,80,57,13int[] arr = {24, 69, 80, 57, 13};/** n个数只要比较n-1次即可找出最大的那个值* */int temp = 0;//临时变量 用来交换操作for (int i = 0; i < arr.length - 1; i++) {//for循环 相当于遍历整个数组 因为下面有一个i+1 可以访问到数组最后一个元素//arr.length-1用来防止数组角标越界 因为下面要用到i+1//如果没有-1操作 即为arr.length时,当比较最后一个值时,arr[i+1]会出现角标越界//第一轮比较if (arr[i + 1] < arr[i]) {//如果前一个数大于后一个数 交换两个数//如果 冒泡要往前冒泡修改为arr[i + 1] > arr[i]就行temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}System.out.print("第1轮排序:");//遍历for (int j = 0; j < arr.length; j++) {System.out.print(arr[j] + "\t");}System.out.println();for (int i = 0; i < arr.length - 1; i++) {if (arr[i + 1] < arr[i]) {temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}System.out.print("第2轮排序:");for (int j = 0; j < arr.length; j++) {System.out.print(arr[j] + "\t");}System.out.println();for (int i = 0; i < arr.length - 1; i++) {if (arr[i + 1] < arr[i]) {temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}System.out.print("第3轮排序:");for (int j = 0; j < arr.length; j++) {System.out.print(arr[j] + "\t");}System.out.println();for (int i = 0; i < arr.length - 1; i++) {if (arr[i + 1] < arr[i]) {temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}System.out.print("第4轮排序:");for (int j = 0; j < arr.length; j++) {System.out.print(arr[j] + "\t");}System.out.println();}
}
冒泡排序代码实现
/*** @author Hwang* @create 2020-06-30 20:26*/
public class BubbleSort1 {public static void main(String[] args) {int[] arr = {24, 69, 80, 57, 13};int temp = 0;//临时变量 用来交换操作for (int j = 0; j <arr.length ; j++) {//外层循环控制冒泡的次数for (int i = 0; i < arr.length - 1-j; i++) {//内层循环控制比较模块  执行完最大值就再最后面了//arr.length - 1-j 减j的原因是因为每次比较完,最后一个数不用比较了if (arr[i + 1] < arr[i]) {//如果前一个数大于后一个数 交换两个数//如果 冒泡要往前冒泡修改为arr[i + 1] > arr[i]就行temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}}for (int k = 0; k < arr.length; k++) {System.out.print(arr[k] + "\t");}}
}
总结-冒泡中我学会了什么?
1.写代码需要由简入繁,代码由死而生
2. 冒泡中,就是最好的例子。比如先写内层循环,后写外层循环。
3. 由内及外。

查找[重点2]

在java中,我们常用的查找有两种:
1. 顺序查找
2. 二分查找

顺序查找

import java.util.Scanner;/*** @author Hwang* @create 2020-07-01 0:04*///思路一:
public class SeqSort {public static void main(String[] args) {int arr[]={49,38,65,97,76,13};int index=-1;Scanner sc=new Scanner(System.in);System.out.print("请输入要查询的数字:");int destNum = sc.nextInt();for (int i = 0; i < arr.length; i++) {if(destNum==arr[i]){index=i;}}if(index==-1){System.out.println("没有你要找的数...");}else {System.out.println("你要找的数下标为:"+index);}
}//思路二:哨兵思想
import java.util.Scanner;/*** @author Hwang* @create 2020-07-01 0:04*/
import java.util.Scanner;/*** @author Hwang* @create 2020-07-01 0:04*/
public class SeqSort2 {public static void main(String[] args) {int arr[]={49,38,65,97,76,13};int i=arr.length-1;Scanner sc=new Scanner(System.in);System.out.print("请输入要查询的数字:");int destNum = sc.nextInt();int[]temp=new int[arr.length];//新建一个数组存放原来数组,新建的数组的第一个索引存放哨兵temp[0]=destNum;for (int j = 1; j <arr.length; j++) {temp[j]=arr[i];}arr=temp;//由于arr[0]=destNum;也就是说,再数组中,如果有key则返回i值,查找成功。//否则一定在最终的arr[0]处等于key,此时返回的是0,即说明arr[1]~arr[arr.length-1]中没有找到关键字,查找失败。while(destNum!=arr[i]){i--;}if(i!=0){System.out.println("你要找的数下标为:"+i);}else {System.out.println("没找到");}}
}
//思路2的优点:
1. 不用每次循环都对i判断是否越界,即是否小于等于数组的长度;
2. 设置一个哨兵可以解决不需要让i与数组的长度做比较

顺序查找的案例

  • 只能找到一个
import java.util.Scanner;
public class SeqFind
{public static void main(String[] args) {/*有一个数列/数组:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称【顺序查找】要求: 如果找到了,就提示找到,并给出下标值*///创建一个扫描器Scanner scanner = new Scanner(System.in);String[] hero = {"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王", "金毛狮王", "金毛狮王"};System.out.println("输入名字");String findName = scanner.next();int index =  -1;//遍历//完成查找for( int i = 0; i < hero.length; i++) {//比较if( findName.equals(hero[i])) {index = i;break;} }//提示if( index == -1) {System.out.println("没有找到...");} else {System.out.println("找到下标是..." + index);}}
}
  • 能找到所有的
import java.util.Scanner;
public class SeqFind2
{public static void main(String[] args) {/*有一个数列/数组:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称【顺序查找】要求: 如果找到了,就提示找到,并给出下标值//可以找到所有满足条件*///创建一个扫描器Scanner scanner = new Scanner(System.in);String[] hero = {"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王", "金毛狮王", "金毛狮王"};System.out.println("输入名字");String findName = scanner.next();//创建一个数组 , 记录 找到的下标,考虑极端情况int[] resIndex = new int[hero.length];// {0, 0, 0, 0, 0, 0}int resCount = 0; //记录找到多少个满足条件的//遍历//完成查找for( int i = 0; i < hero.length; i++) {//比较if( findName.equals(hero[i])) {//找到一个resIndex[resCount] = i; // {1,4,5,0,0,0}resCount++;//3} }if(resCount == 0) {System.out.println("没有找到...");} else {for( int i = 0; i < resCount; i++) {System.out.println("下标为=" + resIndex[i]);}}}
}

二分[折半]查找[递归与非递归]

原理图

1. 将min 、mid、max理解成三个移动的指针。
2. min要操作永远是+操作
3. max要操作永远是-操作
4. 一直找中间值是否等于目标值
import java.util.Scanner;/*** @author Hwang* @create 2020-06-30 22:40*/
public class BinarySort2 {public static void main(String[] args) {int []arr={1,6,9,15};int minIndex=0;int maxIndex=arr.length-1;int midIndex=(minIndex+maxIndex)/2;int findNum=6;int index=-1;//用来标记是否可以查找到if(findNum>arr[midIndex]){minIndex=midIndex+1;}else if(findNum<arr[midIndex]){maxIndex=midIndex-1;}else{index=midIndex;}//判断是否有那个数if(index!=-1){System.out.println("查找到了,该元素的下标为"+index);}else {System.out.println("没有查找到该元素");}}
}
**********************
//需要重复查找的话,套一个循环就可以了;
import java.util.Scanner;/*** @author Hwang* @create 2020-06-30 22:40*/
public class BinarySort2 {public static void main(String[] args) {int []arr={1,6,9,15};int minIndex=0;int maxIndex=arr.length-1;int midIndex=(minIndex+maxIndex)/2;int index=-1;//用来标记是否可以查找到Scanner sc = new Scanner(System.in);do{System.out.print("请输入要查找的数: ");int findNum=sc.nextInt();if(findNum>arr[midIndex]){minIndex=midIndex+1;}else if(findNum<arr[midIndex]){maxIndex=midIndex-1;}else{index=midIndex;}//判断是否有那个数  模块if(index!=-1){System.out.println("查找到了,该元素的下标为"+index);}else {System.out.println("没有查找到该元素");}}while(index==1);}
}

二维数组

二维数组使用

1. 语法: 类型 数组名[][]=new 类型[大小][大小]
2. 动态初始化-列数不确定
3. 静态初始化:定义 类型 数组名[][]  = {{值1,值2..},{值1,值2..},{值1,值2..}}
int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
定义一个名称为arr的二维数组,二维数组中有三个一维数组
每一个一维数组中具体元素也都已初始化
第一个一维数组 arr[0] = {3,8,2};
第二个一维数组 arr[1] = {2,7};
第三个一维数组 arr[2] = {9,0,1,6};
第三个一维数组的长度表示方式:arr[2].length;

二维数组的内存解析

1. 所以在二维数组列数不确定的情况下,比如
int[][] arr1 = new int[4][];
arr1[1] = new int[]{1,2,3};
arr1[2] = new int[4];
arr1[2][1] = 30;如果没有给一维数组分配空间,他的值是为null的,所以就访问不了二维数组。即:
int[][] arr1 = new int[4][];
arr1[3][1]=3;//erro2.
int[][] arr = new int[3][];
arr[1] = new int[]{1,2,3};
arr[2] = new int[3];
Sysout(arr[0]);//null
Sysout(arr[0][0]);//报异常

二维数组的遍历

/*** @author Hwang* @create 2020-06-30 11:28*/
public class MultiArray {public static void main(String[] args) {int [][]arr=new int[4][6];/** 遍历* */for (int i = 0; i < arr.length; i++) {//arr.length 有几个以为数组for (int j = 0; j < arr[i].length; j++) {//arr[i].length返回当前一维数组的长度System.out.print(arr[i][j]+"\t");}System.out.println();}}

二维数组列数不确定

/*** @author Hwang* @create 2020-06-30 11:28*/
public class MultiArray2 {public static void main(String[] args) {int [][]arr=new int[4][];/** 列数不确定* *///exception in thread "main" java.lang.NullPointerException//空指针异常//for (int i = 0; i < arr.length; i++) {//    for (int j = 0; j < arr[i].length; j++) {//        arr[i][j]=i+1;//    }//}for (int i = 0; i < arr.length; i++) {arr[i]=new int[i+1];//只有new了才会分配空间for (int j = 0; j < arr[i].length; j++) {//arr[i]=new int[i+1]; 放在这里是错误的arr[i][j]=i+1;}}//遍历for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {//arr[i].length返回当前一维数组的长度System.out.print(arr[i][j]+"\t");}System.out.println();}}}

二维数组内存解析

杨辉三角案例

/*** @author Hwang* @create 2020-06-30 14:16*/
public class MultiArray_Yanghui3 {public static void main(String[] args) {/** 打印出等腰类型* */int[][] arr=new int[10][];for (int i = 0; i < 10; i++) {arr[i]=new int[i+1];//如果这里不进行这步数组初始化操作,会报空指针异常for (int j = 0; j <=i; j++) {if(j==arr[i].length-1||j==0){arr[i][j]=1;}else{arr[i][j]=arr[i-1][j-1]+arr[i-1][j];}System.out.print(arr[i][j]+"\t");}System.out.println();}}
}
/*1. 第一行有 1 个元素, 第 n 行有 n 个元素2. 每一行的第一个元素和最后一个元素都是 13. 从第三行开始, 对于非第一个元素和最后一个元素的元素的值. arr[i][j]arr[i-1][j-1]+arr[i-1][j];*/

java_系列3_数组相关推荐

  1. es6删除数组某一项_javascript基础系列:数组常用方法解析

    javascript基础系列:数组常用方法解析 今天是比较特殊的日子,我们编程人员共同的节日,1024,祝每个编程人员节日快乐! 数组是javascript必不可少的一项,今天让我们来总结一下数组操作 ...

  2. javascript基础系列:数组常用方法解析

    javascript基础系列:数组常用方法解析 今天是比较特殊的日子,我们编程人员共同的节日,1024,祝每个编程人员节日快乐! 数组是javascript必不可少的一项,今天让我们来总结一下数组操作 ...

  3. es6删除数组某项_javascript基础系列:数组常用方法解析

    javascript基础系列:数组常用方法解析 今天是比较特殊的日子,我们编程人员共同的节日,1024,祝每个编程人员节日快乐! 数组是javascript必不可少的一项,今天让我们来总结一下数组操作 ...

  4. js入门系列演示·数组

    数组,用处可多啦,要不怎么会被javascript选如核心成员呢,对了,因为是核心(是核心不是黑心)所以声明方式也有所不同 例如 : var arr=new Array(); JS数组有别于其他语言的 ...

  5. Matlab系列之数组(矩阵)的生成

    从本篇开始,会有一段时间都将用于记录数组.矩阵的操作等等,如果以前没有接触过相关的,可能会觉得要展示的是很复杂的东西,但并不是,这是一个很简单的部分,但也是一个很重要的部分,至少现在的我觉得这部分的内 ...

  6. 剑指offer系列-03.数组中的重复数字

    剑指offer系列第03题.数组中的重复数字 找出数组中重复的数字.在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内. 数组中某些数字是重复的,但不知道有几个数字重复了,也不 ...

  7. Go语言自学系列 | golang数组

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  8. J2SE基础夯实系列之数组

    java中经常使用的是数组,前一段时间突然忘记了怎么定义char类型的二位数组: char[][] c = {{},{},{'A','B','C'},{'D','E','F'},{'G','H','I ...

  9. 去重查询_《前端算法系列》数组去重

    虽然算法在前端开发中很少会得以使用,但是了解常用的算法,熟悉各种算法的性能和优劣,将会让你在前端的道路上走的更远. 前言 文中所有代码位于位于此代码仓库中,大家可以下载代码进行学习.推敲和改进.另,如 ...

最新文章

  1. 机器学习博士在获得学位之前需要掌握的九种工具!
  2. NodeJS起步两三事
  3. php roadrunner,使用RoadRunner 加速 Laravel 应用
  4. wxWidgets第九课 wx绘图工具
  5. 通过GPG非对称加密工具验证ECharts发布版本实例演示,win10下Gnu Privacy Guard工具的安装和使用方法
  6. 【Linux】一步一步学Linux——fc命令(224)
  7. Java笔记-使用ServerSocket构建HTTP服务器
  8. Java关键字break、return、continue
  9. transformer模型_【预训练模型】万字长文梳理NLP预训练模型!从transformer到albert...
  10. WM_CLOSE、WM_DESTROY、WM_QUIT区别
  11. Unity 3D 学习(一)——Roll a ball
  12. widi软件|widi音频转换软件
  13. 【Java】日期格式化的三种方式
  14. window窗口切换快捷键
  15. HQChart使用教程85-股票复权计算
  16. YIQ、YUV、YCrCb 与 RGB关系
  17. H3C交换机型号区分
  18. python 内置函数 和 匿名函数
  19. 计算机上如何转换搜狗,无法切换到搜狗输入法怎么办
  20. origin作图怎样延伸_Origin使用

热门文章

  1. 无限天空服务器,滚动的天空无限钻石无限金币版
  2. 迁移学习概述(Transfer Learning)
  3. 南通大学机械院两年来的心得体会(给大一新生的一点建议)
  4. 戴愫-有效提升与陌生人的社交能力
  5. 三星为企业服务器开发高性能PCIe 5.0固态硬盘;阳狮集团升任张珲杰为明思力中国董事总经理 | 全球TMT...
  6. 几个大学生实用的网站推荐
  7. 中国信创桌面云市场竞争格局初显,华为、华云、深信服占据三强
  8. javascript当中options的用法
  9. Linux输入命令不显示
  10. 随机点名器1(Java数组基础)