去哪网

题目描述

现在有一个数组,其值为从1到10000的连续增长的数字。出于某次偶然操作,导致这个数组中丢失了某三个元素,同时顺序被打乱,现在需要你用最快的方法找出丢失的这三个元素,并且将这三个元素根据从小到大重新拼接为一个新数字,计算其除以7的余数。 例:丢失的元素为336,10,8435,得到的新数字为103368435,除以七的余数为2。

输入描述:

输入数据为一行,包含9997个数字,空格隔开。

输出描述:

输出为一行,包含一个数字。
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		String line=sc.nextLine();
	    String[] data=line.split(" ");
//	    int[] data_1=new int[data.length];
	    HashSet<Integer> data_1=new HashSet<>();
	    for (int i = 0; i < data.length; i++) {
			data_1.add(Integer.parseInt(data[i]));
		}
	    int [] num=new int[3];
	    int t=0;
	    for (int i = 1; i <=10000; i++) {
			if (!data_1.contains(i)) {
				
				num[t++]=i;
				if (t==3) {
					break;
				}
			}
		}
	    String deString="";
	    for (int i = 0; i < num.length; i++) {
			deString=deString+num[i];
		}
	   
	    System.out.println(Long.parseLong(deString)%7);

	}

}


有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。

输入描述:
输入包括一行,逗号隔开的两个正整数x和y,取值范围[1,10]。


输出描述:
输出包括一行,为走法的数目。
示例1

输入

3 2

输出

10
import java.time.zone.ZoneRulesProvider;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Scanner;

public class Main {
      public static void main(String[] args) {
        System.out.println( countWays2(3, 2)); ;
    }
       public static int countWays(int x, int y) {
            if (x==0||y==0) {
                return 1;
            }
            else {
                return countWays(x-1, y)+countWays(x, y-1);
            }
        }
       public static int countWays2(int x, int y) {
         int[][]  data=new int[x+1][y+1];
        for (int i = 0; i <=x; i++) {
            data[i][0]=1;
        }
        for (int i = 0; i <=y; i++) {
            data[0][i]=1;
        }
    
        for (int i = 1; i <= x; i++) {
            for (int j = 1; j <= y; j++) {
                
                    data[i][j]=data[i-1][j]+data[i][j-1];
                
            }
        }
        return data[x][y];
        }

}

 

题目描述

酒店房间的价格录入是通过时间段来录入的,比如10月1日至10月7日800元,10月8日至10月20日500元,请实现以下函数int[][] merge(int[][] dateRangePrices),输入是某个酒店多个日期段的价格,每个日期段(终止日期大于等于起始日期)和对应的价格使用长度为3的数组来表示,比如[0, 19, 300], [10, 40, 250]分别表示从某天开始第1天到第20天价格都是300,第11天到第41天价格都是250,这些日期端有可能重复,重复的日期的价格以后面的为准, 请以以下规则合并并输出合并结果:
1.相邻两天的价格如果相同,那么这两个日期段应该合并
2.合并的结果应该以起始日期从小到大排序

输入描述:

输入数据包括多行,如样例输入所示。

输出描述:

输出数据为一行,如样例输出所示
示例1

输入

复制
1 1 100
2 3 100
4 5 110

输出

复制
[1, 3, 100],[4, 5, 110]
import java.io.IOException;
import java.util.Scanner;
public class Main {
      public static void main(String[] args) throws NumberFormatException, IOException {
        Scanner scanner=new Scanner(System.in);
        int[] s=new int[20000];
        int max=0;
        while (scanner.hasNext()) {
            int start=scanner.nextInt();
            int end=scanner.nextInt();
            int data=scanner.nextInt();
            for (int i = start; i <=end; i++) {
                 s[i]=data;//覆盖以前的数据
            }
            max=Math.max(end, max);//输入无序
        }
        for (int i = 0; i < s.length; i++) {
            if (s[i]==0) {
                continue;//数组填不满
            }
            int start=i;
            while(i<s.length&&s[i]==s[i+1]) {
                i++;//重复元素处理
            }
    System.out.print("["+start+", "+i+", "+s[i]+"]");//打印
            if (i!=max) {
                System.out.print(",");
            }
        }
     }
        
        
}

 

题目描述

给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符(需要区分大小写)。

输入描述:

输入数据一个字符串,包括字母,数字等。

输出描述:

输出首先出现三次的那个英文字符

import java.util.Scanner;
public class Main {

            public static void main(String[] args) {
               Scanner sc=new Scanner(System.in);
               int data[]=new int[200];
               boolean flag=false;
               String s=sc.nextLine();
               char[] data_1=s.toCharArray();
               for (int i = 0; i < data_1.length; i++) {
                   if (('A'<=data_1[i]&&data_1[i]<='Z')||('a'<=data_1[i]&&data_1[i]<='z')) {
//                       System.out.println(data_1[i]);
                       data[data_1[i]]++;
                       for (int j = 0; j < data.length; j++) {
                            if (data[j]>=3) {
                                System.out.println((char)j);
                                  flag=true;
                                  break;
                            }
                        }
                       if (flag) {
                        break;
                    }
                   }
               }
             
               sc.close();
               
            }
}

 题目描述:

输入:

2 3 1 1 4

输出

1 3

第一次跳的时候idnex为0 数值为2 可以跳1-2步 跳到index为1的3或index为2 的1 这时跳到index为1 的3 然后第二次三步跳到index为4 的4结束。

public class Main {
 
    public static void main(String[] args) throws Exception {
         Scanner in=new Scanner(System.in);
         while(in.hasNext()){
             String line=in.nextLine();
             String[] data=line.split(" ");
             int[] data_1=new int[data.length];
             for (int i = 0; i < data.length; i++) {
                data_1[i]=Integer.parseInt(data[i]);
            }
            int x=0;
            int max=0,index=0;
            boolean flag=false;
             while(x < data_1.length) {
            
                int temp=data_1[x];
                int[] data_2=new int[temp];
                for (int j =x+ 1; j <=x+temp; j++) {
                    if (j<data_1.length&&data_1[j]>max) {
                        max=data_1[j];
                        index=j;
                    }
                }
                if (max>data_1.length-x-1) {
                    System.out.print(data_1.length-x-1);
                    break;
                }
                if (index==data_1.length-1) {
                     System.out.print(index-x);
                     break;
                 }else {
                     System.out.print(index+" ");
                 }
                x=index;
                
              }
         }
    

     }
    }

 

posted @ 2018-09-30 17:22  HungryWolfer  阅读(330)  评论(0编辑  收藏  举报