小莫蓝桥刷题之路(Day9)

纪小莫 2023-03-12 18:47:31

1.很简单。不过需要注意的是if(count==99998)那个要与if(sushu(i))并列.

 

import java.util.Scanner;
//1:无需package
//2: 类名必须Main, 不可修改

public class Main {
 public static void main(String[] args) {
	 int count=0;
     //在此输入您的代码...
     for(int i=9;;i++){
       if(sushu(i)){
         count++;
       }
       if(count==99998){
    	   System.out.println(i);
           break;
      }
       
     }
 }
 public static boolean sushu(int n){
   for(int i=2;i<=Math.sqrt(n);i++){
       if(n%i==0){
         return false;
       }
   }
   return true;
 }
}

2.

 这题经典的DFS题目,首先看题目需要用到的方法,首先我们要构造exch方法,对每一个数进行交换,实现所有的可能,同时还需构造一个check方法,看看是否满足题目要求(要求编号相邻的书不能放在相邻的位置。)。由于知道需要回溯,所以构造dfs方法,在dfs中调用check以及exch方法实现对所有可能的筛选。

public class Main {
    static int []arr={1,2,3,4,5,6,7,8,9,10};
    static int ans=0;
	public static void main(String[] args) {
		dfs(0);
		System.out.println(ans);
	}
	static void dfs(int k){
		if(k==arr.length){
			if(check()){
				ans++;
			}
		}
		for(int i=k;i<arr.length;i++){
			exch(i,k);
			dfs(k+1);
			exch(i,k);
		}
	}
	static boolean check(){
		for(int i=0;i<arr.length-1;i++){
			if(Math.abs(arr[i+1]-arr[i])==1){
				return false;
			}
		}
		return true;
	}
	static void exch(int a,int b){
		int temp;
		temp=arr[a];
		arr[a]=arr[b];
		arr[b]=temp;
	}

}

3.这题好难,看了题解才勉强看懂,可能刚接触双指针不太了解。这题的思路主要是判断 arr[L][1]是否等于arr[R][1](当不等于的时候,判断这时候是否符合热帖的概念,即:arr[R][0]-arr[L][0]<d,R-L+1>=k。当满足上述两个条件时,令t=1,所以当t=1的时候,当前编号L为热帖)。最后需要对最后一个编号多进行一次判断。对了,值得一提的是,这里用Scanner输入输出会导致部分超时,这时用BR可以满足OJ。

import java.util.Arrays;
import java.io.*;
public class Shuangzhizhen {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer st = new StreamTokenizer(br);
    static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
    public static void main(String[] args) throws Exception {
      int n=nextInt();
      int d=nextInt();
      int k=nextInt();
      int[][]arr=new int[n][2];
      for(int i=0;i<n;i++){
    	  arr[i][0]=nextInt();
    	  arr[i][1]=nextInt();
      }
      Arrays.sort(arr,((a,b)->{
    	  if(a[1]!=b[1]){
    		  return a[1]-b[1];
    	  }
    	  return a[0]-b[0];
      }));
      int t=0,s=0;
      int []brr=new int[n];
      int l=0;
      for(int r=0;r<n;r++){
    	  if(arr[r][1]!=arr[l][1]){
    		  if(t==1){
    			  brr[s++]=arr[l][1];
    		  }
    		  t=0;
    		  l=r;
    	  }
    	  if(arr[r][0]-arr[l][0]>=d){
    		  l++;
    	  }
    	  if(r-l+1>=k){
    		  t=1;
    	  }
      }
      if(t==1){
    	  brr[s++]=arr[n-1][1];}
    for(int i=0;i<s;i++){
    	  pw.println(brr[i]);
    	  pw.flush();
    	  }
      }
    
    public static int nextInt() throws Exception {//int型
        st.nextToken();
        return (int) st.nval;
    }
 
    public static long nextLong() throws Exception {//long型
        st.nextToken();
        return (long) st.nval;
    }
}

4.自己来看,最多只能暴力拿分。System.out.println((n*(n+1)/2)+2);不过看了怂佬的题解才明白,说实话这道题看起来不难,但实际上完全理解要花较多头脑。对了这里用到的return,当找到合适的数的时候,return会跳出当前的方法,不去执行最后System.out.println((n*(n+1)/2)+2);这一段代码了,这个时候就不能用break了。

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        long n=scan.nextLong();
        int []arr=new int[44725];
        arr[0]=1;
        long k=1L;
        if(n==1){
          System.out.println(1);
          
        }
        for(int i=1;i<44725;i++){
          for(int j=i;j>=1;j--){
            arr[j]+=arr[j-1];
            if(arr[j]==n){
              System.out.println(k+i-j+1);//前四行所有的数加上当前行数i(i为当前行有多少个数)-j+1;
              return;
            }
          }
          k+=i+1;
        }
        System.out.println((n*(n+1)/2)+2);
        scan.close();
    }
}

 

...全文
21 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,779

社区成员

发帖
与我相关
我的任务
社区描述
和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

 刷题!

试试用AI创作助手写篇文章吧