zoukankan      html  css  js  c++  java
  • 去哪网

    题目描述

    现在有一个数组,其值为从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;
                    
                  }
             }
        
    
         }
        }
  • 相关阅读:
    [LeetCode] Permutation Sequence, Solution
    [LeetCode] Spiral Matrix II, Solution
    同学你好, google到你的帖子,想问下为什么你的解法不用考虑到2个数相同的情况?比如4,4,8...
    [LeetCode] Regular Expression Matching, Solution
    {4,4,8}倒还好,不过{4,8}就会有问题了。这里倒是一个bug。一个可用的办法就是用一个vis...
    [LeetCode] Merge Intervals, Solution
    请问这个解法的时间复杂度怎么分析?谢谢!
    未做题
    dude, visited[i 1] == 0 should be visited[i 1]...
    发布一个开源的c++网络事件库【转载Zark@cppthinker.com】
  • 原文地址:https://www.cnblogs.com/jinxingerhuo/p/9732718.html
Copyright © 2011-2022 走看看