精华内容
下载资源
问答
  • 题目:在一个长度为n数组里的所有数字都在0到n-1的范围内,找出数组任意一个重复的数字。 测试代码: public static void main(String[] args) { int [] numbers ={0,1,2,2,3,4,5}; int [] duplication = ...

    题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内,找出数组中任意一个重复的数字。

    测试代码:

     public static void main(String[] args) {
            int [] numbers  ={0,1,2,2,3,4,5};
            int [] duplication = new int[10];
            int duplicate = duplicate(numbers, duplication);
            System.out.println("duplicate is = "+duplicate);
    
        }
        
        public static int  duplicate(int  [] numbers,int [] duplication) {
            if(numbers.length == 0){
                return -1;
            }
            for(int i=0; i<numbers.length; i++){
                if(numbers[i]<0 || numbers[i]>=numbers.length){
                    return -1;
                }
            }
    
            for(int j=0; j<numbers.length; j++){
                while(numbers[j] != j){
                    if(numbers[j]==numbers[numbers[j]]){
                        duplication[0] = numbers[j];
                        return duplication[0];
                    }
                    int temp = numbers[j];
                    numbers[j]=numbers[temp];
                    numbers[temp]=temp;
                }
            }
            return -1;
        }

     

    展开全文
  • 题目:在一个长度为n数组里的所有数字都在0到n-1的范围内,找出数组任意一个重复的数字。 解答: public static void main(String[] args) { int [] numbers ={0,1,2,2,3,4,5}; int [] duplication = new ...

    题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内,找出数组中任意一个重复的数字。

    解答:

    public static void main(String[] args) {
            int [] numbers  ={0,1,2,2,3,4,5};
            int [] duplication = new int[10];
            int duplicate = duplicate(numbers, duplication);
            System.out.println("duplicate is = "+duplicate);
    
        }
        public static int  duplicate(int  [] numbers,int [] duplication) {
            if(numbers.length == 0){
                return -1;
            }
            for(int i=0; i<numbers.length; i++){
                if(numbers[i]<0 || numbers[i]>=numbers.length){
                    return -1;
                }
            }
    
            for(int j=0; j<numbers.length; j++){
                while(numbers[j] != j){
                    if(numbers[j]==numbers[numbers[j]]){
                        duplication[0] = numbers[j];
                        return duplication[0];
                    }
                    int temp = numbers[j];
                    numbers[j]=numbers[temp];
                    numbers[temp]=temp;
                }
            }
            return -1;
        }

     

    展开全文
  • 一个长度为n数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,...

    题目:

    在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。

    思路:

    代码:

    代码中给了三个参数,值得注意的是第三个参数是储存重复数字的数组,大小为1

    public class Solution {
        // Parameters:
        //    numbers:     an array of integers
        //    length:      the length of array numbers
        //    duplication: (Output) the duplicated number in the array number,length of duplication array is 1,so using duplication[0] = ? in implementation;
        //                  Here duplication like pointor in C/C++, duplication[0] equal *duplication in C/C++
        //    这里要特别注意~返回任意重复的一个,赋值duplication[0]
        // Return value:       true if the input is valid, and there are some duplications in the array number
        //                     otherwise false
        public boolean duplicate(int numbers[],int length,int [] duplication) {
            //首先判断不行的条件
            if(length<=0)
            {
                return false;
            }
            //创建一个boolean数组作为标志位,boolean数组占用的内容不高,默认全为false
            boolean [] arr=new boolean[length];
            //进行循环遍历
            for(int i=0;i<length;i++)
            {
                if(arr[numbers[i]]==true)
                {
                    duplication[0]=numbers[i];
                    return true;
                }
                arr[numbers[i]]=true;
            }
            return false;
        }
    }

     

    展开全文
  • 给定一个任意长度的java数组,求数组内的数能组合出来的最大整数。 在美团的电话面试一面中被问到这样的问题,当时最先想到的是用全排列,然后挑出最大的一个,虽然问题可以解决,但是太暴力而且时间复杂度太大。...

    在美团的电话面试一面中被问到这样的问题,当时最先想到的是用全排列,然后挑出最大的一个,虽然问题可以解决,但是太暴力而且时间复杂度太大。后来想到可以通过快排直接排好序,输出就是最大值。时间复杂度也可以接受。

    用快排实现的最大的难点就是怎么进行比较规则的设计。将给的整形转化为字符串string类型比较大小,规则设计如下:当str1 是str2 的从头开始的一部分,则str1>str2例如‘91’ 大于‘919’;否则调用string.compareTo()方法比较大小。具体代码如下:

    代码中regionMatches()函数作用:

    将此对象的子字符串与参数的子字符串进行比较。如果这两个子字符串表示相同的字符序列,则结果为true,当且仅当 ignoreCase 为 true 时忽略大小写。要比较的此String对象的子字符串从索引toffset处开始,
    长度为len。要比较的 other的子字符串从索引ooffset处开始,长度为len。当且仅当下列至少一项为 true 时,结果才为 false,也可以自己写,只是犯懒了,就查了一下API。
    

    package quickSort;
    
    public class QuickSort {
    
    	public static int getMid(int array[], int low, int high) {
    		int temp = array[low];
    		while (low < high) {
    			while (low < high && bigger(temp,array[high])) {
    				high--;
    			}
    			array[low] = array[high];
    
    			while (low < high && bigger(array[low],temp)) {
    				low++;
    			}
    			array[high] = array[low];
    		}
    		array[low] = temp;
    		return low;
    	}
    
    
    	public static void quickSort(int[] array, int low, int high) {
    		if (low < high) {
    			int mid = getMid(array, low, high);
    			quickSort(array, low, mid - 1);
    			quickSort(array, mid + 1, high);
    		}
    	}
    	
    	public static boolean bigger(int a, int b){
    		String str1 = String.valueOf(a);
    		String str2 = String.valueOf(b);	
    		if(str1.regionMatches(0,str2,0,str1.length()) == true 
    				&& str1.length() <= str2.length()){
    
    			//当类似9 和99比较时返回true,即'9'>"99"
    			return true;	
    		}
    		char [] arr1 = str1.toCharArray();
    		int len1 = arr1.length;
    		
    		char [] arr2 = str2.toCharArray();
    		int len2 = arr2.length;
    		
    		if(str1.compareTo(str2) > 0){//字符串比较
    			return true;
    		}
    		return false;
    	}
    
    
    	public static void main(String[] args) {
    		int a[] = new int[] { 9,99,909,9901,8 };
    		quickSort(a, 0, a.length - 1);
    		for (int i = 0; i < a.length; i++) {
    			System.out.print(a[i] +"  ");
    		}
    	}
    	//结果9  99  9901  909  8 
    }

    在百度上也搜到另外一种方法,感觉不好理解,给大家粘出来参考一下。http://zhidao.baidu.com/link?url=77WvVjzCFPeV-UGgHZAbJJ5grsSVcvjjZX3mtE_9EEYl5pyIXnM9zGalsd5k19DFs6vBgybGyGvPLYRUOlcrNw8X1O67QvXVzvDmsHnX_ha

    展开全文
  • 一个长度为n数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2...
  • 输入一个长度n的数组,将他排成升序,即对于任意相邻2个数字a[i],a[i+1]来说,a[i] &lt;= a[i+1]题目分析解法 题目来自51nod,原文链接 题目分析 输入:输入n为数组长度,循环填充n个数据 输出:数组长度n,...
  • 一个长度为n数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2...
  •  首先在下标0---n之间随机生成一个下标,将这个下标对应的数和数组的第一个数交换位置;然后从小标1----n之间随机生成一个数,将下标对应的 数和数组的第二个数交换位置。依次这样下去,知道找出m个数。public ...
  • 建立一个长度未知的数组

    万次阅读 2015-07-21 21:17:15
    #include using namespace std; int main(){ int i,n; cin>>n; int *arr= new int[n];... //以下代码对一个长度为n数组第二位开始依次做计算,并输出最后一个值得结果 for(i=1;i<n;i++){ arr[i]=arr[i-1]+i; }
  • 一个长度为n数组里的所有数字,都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。请找出数组任意一个重复的数字。 题目描述 数组中重复的数字。在一个长度为n数组里的...
  • * 题目:在一个长度为n数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的, * 但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组任意一个重复的数字。 * 例如,如果输入长度为7...
  • 输入一个数组数组长度有用户输入,然后再一次输出数组的元素。
  • 题目:在一个长度为n数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组任意一个重复的数字。 例如,如果输入长度为7的数组{2,3...
  • 一个长度为n数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2...
  • 一个长度为n数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2...
  • 一个长度为 n数组里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5,...
  • 一个长度为n数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2...
  • 本文内容: 使用Java实现:在一个长度为 n数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组任意一个重复的数字。 示例...
  • 一个长度为n数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2...
  • 一个长度为n数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2...
  • 问题描述:长度为n的整形数组,找出其中的任意n-1数乘机最大的那组,可以用乘法,但不能用除法,要求对算法处理的 时间复杂度和空间复杂度做出分析。 方法: 首先能想到的一般方法就是暴力求解法。假设去掉...
  • java输入任意长度二维数组

    万次阅读 2017-02-18 14:18:51
    二维数组,每维想要输入任意个数的字符用空格隔开时可以用以下代码,如有更好的方法欢迎讨论。 package basic_practice; import java.util.Scanner; public class Main { public static void main(String[] ...
  • 长度为n数组(元素互不相同)中任意选择m个数的所有组合 //分析及构思 1.键盘输入数组长度 2.键盘输入组合的个数 3.利用随机数获得一个数组 4.在构建数组是要对数组中的元素进行判断,保证新生成的随机数...
  • Java获取键盘输入任意长度二维数组

    千次阅读 2020-03-07 14:48:48
    二维数组,每维想要输入任意个数的字符用空格隔开时可以用以下代码 import java.util.Scanner; public class Main { public static void main(String[] args) { int a[][]=new int[100][100]; int n; ...
  • 思路:用二进制的0000000000~1111111111代表某个数字是否被选中,一个位代表数组中的一个元素是否被选中,可以概括所有的情况,如果数字是0101010101代表45,99,6,20,18五个数字被选出来了。接着我们只需要计算着五个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 195,095
精华内容 78,038
关键字:

任意一个长度为n的数组