赞
踩
本篇讲解了一些数组相关题目(主要以代码的形式呈现),主要目的在于巩固数组相关知识。
创造不易,可以点点赞吗~
如有错误,欢迎指出~
将数组元素以字符串的形式输出在屏幕上
思路
首先要判断空指针和空数组的情况,利用字符串拼接实现toString功能
- //实现自己的数组转成字符串
- public static String myToString(int[] array){
- //判断空指针情况 (没有指向对象)
- if(array==null){
- return null;
- }
- //判断空数组情况 (指向的对象为空)
- if(array.length==0){
- return "[]";
- }
-
- String ret="[";
- for (int i = 0; i < array.length; i++) {
- ret=ret+array[i];
- if(i!= array.length-1){
- ret=ret+" ,";//字符串拼接
- }
- }
- ret+="]";
- return ret;
- }

如果数组比较大,效率低
- public static int checkNum(int[]array,int key){
- for (int i = 0; i < array.length; i++) {
- if(array[i]==key){
- return i;
- }
- }
- return -1;
- }
效率高,前题是建立在当前数组是有序的
- //二分查找
- public static int zheBanFind(int[]array,int key){
- int right=0;
- int left= array.length-1;
- while(right<=left){
- //int mid=(right+left)/2;
- //int mid=(left+(left-righ)/2);//防止越界
- int mid=(right+left)>>>1;//右移一位,相当于除法
- if(array[mid]<key){
- right=mid+1;
- }
- if(array[mid]>key){
- left=mid-1;
- }
- if(array[mid]==key){
- return mid;
- }
- }
- return -1;
- }

- //java实现冒泡排序
- public static void BubbleSort(int[]array){
- boolean flag=true;
- for (int i = 0; i < array.length-1; i++) {
- //第一趟
- for (int j = 0; j < array.length-1-i; j++) {//减i表示每一趟都比上一趟少一次
- if(array[j]>array[j+1]){
- int tmp=array[j];
- array[j]=array[j+1];
- array[j+1]=tmp;
- flag=false;
- }
- }
- if(flag==true){
- break;
- }
- }
- }

- //数组的逆置
- public static void reverse(int[]array){
- int left=0;
- int right= array.length-1;
- while(left<right){
- int tmp=array[left];
- array[left]=array[right];
- array[right]=tmp;
- left++;
- right--;
- }
- }
将数组重新拷贝一份,当然java中自带了拷贝方法copyOf(既可以拷贝,又可以扩容)
- }
- //数组的拷贝
- public static int[] copy1(int[]array){
- int[]tmp=new int[array.length];
- for (int i = 0; i < array.length; i++) {
- tmp[i]=array[i];
- }
- return tmp;
- }
-
- public static void main(String[] args) {
- int[]array={9,8,7,6,5,4,3,2};
-
- //Java里自带的拷贝
- /**
- * 可以看作是扩容
- */
-
- int[] cp=Arrays.copyOf(array,array.length*2);
- System.out.println(Arrays.toString(cp));
-
- //数组填充 可以局部填充
- int[] array4=new int[10];
- Arrays.fill(array4,1,6,666);//在数组array4中的【1,6)的位置填充666
- System.out.println(Arrays.toString(array4));
- }

将数组中奇数放在前面,偶数放在后面
-
- public static void fun3(int[] array) {
- int left = 0;
- int right = array.length - 1;
- while (left < right) {
- while (left < right && array[left] % 2 != 0) {//left<right防止越界
- //奇数
- left++;
- }
- while (left < right && array[right] % 2 == 0) {//left<right防止越界
- //偶数
- right--;
- }
- int tmp = array[left];
- array[left] = array[right];
- array[right] = tmp;
- }
- }
-
- public static void main(String[] args){
- int[] array = {1, 2, 3, 5, 6, 7};
- fun3(array);
- System.out.println(Arrays.toString(array));
- }

在数组{2,7,11,15}中找两个数相加的值为13,返回【2,11】
-
- public static int[]fun4(int[]array,int target){
- int[]ret={-1,-1};//没找到就直接返回-1
- for (int i = 0; i < array.length; i++) {
- for (int j = 0; j < array.length; j++) {
- if(array[i]+array[j]==target){
- ret[0]=array[i];
- ret[1]=array[j];
- }
- }
- }
- return ret;
- }
-
- public static void main(String[] args) {
- int[]array={2,7,11,15};
- int[]ret=fun4(array,4);
- System.out.println(Arrays.toString(ret));
- }

判断一个数组中是否存在连续3个奇数
-
- public static boolean fun8(int[]array){
- int count=0;
- for (int i = 0; i < array.length; i++) {
- if(array[i]%2!=0){
- count++;
- if(count==3){
- return true;
- }
- }
- else{
- count=0;
- }
- }
- return false;
- }
-
- public static void main(String[] args) {
- int[]array={1,2,3,0,7,9,6};
- System.out.println(fun8(array));
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。