java编程分享

来源:互联网 发布:js让某个div隐藏 编辑:程序博客网 时间:2024/05/21 22:09

1:去掉一个已经排好序的数组的重复数字,然后输出该数组,假设该数组为1,1,2,2,3,3,4,4,4,5,8,8,9,那么输出结果应该为1,2,3,4,5,8,9

import java.util.ArrayList;

public class alan {
    
    public static void main(String[] args) {
   
    ArrayList data = new ArrayList();
    int[] a = {1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 8, 8, 9};
    int i=0;
    while(i<(a.length-1)) {
     
    if(a[i]!=a[i+1]) {
   
    data.add(a[i]); 
   
   
    }
    if(i==a.length-2) {
   
    if(a[i]!=a[i+1])
    data.add(a[i+1]);
   
    else
    data.add(a[i]);  
   
}
    i++;
         
    }
     
    System.out.println(data);
     
    }
}                                                                                                      调用ArrayList,逐次遍历,有相等的时候就添加,但是在数组末端如果两个数字相同或者两个数字不同会少添加一个元素,所以还需要在判断一下。       当然直接用数组处理也可以~


2:写一个类,实现这样一个方法,此方法给定两个参数N、L(均为整数),N是一个自然数,L表示一个长度。要求此函数输出一个最小长度的连续数的数组,此数组的几个连续数的和要等于给定的N,并且该数组的长度要大于等于给定的L。如没有满足该条件的则返回一个空数组{}。
       eg1:(18,3)则应该return {5,6,7}; 分析满足和为18的连续数的数组有两个:{3,4,5,6}、{5,6,7}应题目要求输出最短的数组,所以结果如上。
       eg2:  (18,4) 则应该返回结果{3,4,5,6};
       eg3:  (45,10)则返回结果为{0,1,2,3,4,5,6,7,8,9};


import java.util.Scanner;

public class Test {
 public static void main(String args[]) {
  
 int[] a=eg1(18,3);
       for(int i=0;i<a.length;i++){
           System.out.print(a[i]+" ");
       }  
 }    
 public static int[] eg1(int n,int l){
       
   int[] result=null;
            int len=l;
             
       while(len<n){
           if(2*n/len*len==2*n){                                     //判断数字n是否可以由len个连续的数相加而成,最小的len满足题意,所以break
               break;
           }
           len++;
       }
       if(len>=n) 
        return result;
        
       result=new int[len];
       int start=(2*n/len-len+1)/2;                               //求出连续数列的第一个
       int end=start+len-1;
       for(int i=start,j=0;i<=end;i++){
           result[j]=i;

                    j++;
       }
       return result;


 }
}


原创粉丝点击