過去のプログラミングの質問のブラッシング記録(それらのほとんどは回答付き)

パーフェクトワールド2017秋の採用プログラミングの質問

(2020-09-02記録の書き換え)

配列内のkの最小数を順番に見つけます

順序付けされていない配列の場合、配列内の要素は異なる整数です。最小のk個の数値を返してください。順序は、元の配列内の要素の順序と一致しています。

説明を入力してください:

最初の行は配列の長さn、返される必要のある数k、n> = k
次のn行は配列のn要素であり、各行は整数です

出力の説明:

出力はk行で、各行は整数です

例:

入る

4 2
1
2
3
4

出力

1
2

制限時間

C / C ++言語:100MSその他の言語:2100MS

メモリ制限

C / C ++言語:10KBその他の言語:524298KB

私の答え

import java.util.Scanner;
import java.util.Arrays;

public class Main
{
    
    
    public static void main(String[] args)
    {
    
    
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
        int[] arr = new int[n];
        int[] a = new int[n];
        
        for(int i = 0 ; i < n ; i++)
        {
    
    
            arr[i] = scanner.nextInt();
            a[i] = arr[i];
        }
        
        Arrays.sort(a);
        int t = a[k - 1];
        int count = 0;
        
        for(int i = 0 ; i < n ; i++)
        {
    
    
            if(arr[i] <= t && count <= k)
            {
    
    
                System.out.println(arr[i]);
                count++;
            }
            else if(count > k)
            {
    
    
                break;
            }
        }
    }
}

Bilibili2019秋募集テクニカルポストプログラミングの質問

(2020-08-14記録の書き換え)

整数配列が与えられた場合、3つの数値があり、合計がNであるかどうかを判断します。

説明を入力してください:

入力は行です。
コンマが整数の配列になる前は、各要素はスペースで区切られます。コンマの後はNです。

出力の説明:

出力ブール値
Trueは、合計がNの数値が3つあることを意味します。Falseは、合計がNの数値が3
つないことを意味します。

例:

入る

1 2 3 4 5,10

出力

本当

備考:

配列の長さは2000を超えないため、数値はすべてint範囲の正の整数です。

私の答え

import java.util.Scanner;

public class Main
{
    
    
    public static void main(String[] args)
    {
    
    
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] input = s.split(",");
        String[] arr = input[0].split(" ");
        int N = Integer.parseInt(input[1]);
        int i, j, k, a, b, c;
        
        for(i = 0 ; i < arr.length - 2 ; i++)
        {
    
    
            a = Integer.parseInt(arr[i]);
            if(a >= N) continue;
            for(j = i + 1 ; j < arr.length - 1 ; j++)
            {
    
    
                b = Integer.parseInt(arr[j]);
                if(a + b >= N) continue;
                for(k = j + 1 ; k < arr.length ; k++)
                {
    
    
                    c = Integer.parseInt(arr[k]);
                    if(a + b + c == N)
                    {
    
    
                        System.out.println("True");
                        return;
                    }
                }
            }
        }
        System.out.println("False");
    }
}

カプセル機

ニアン22とニアン33はリトルTVからカプセル玩具の仕事を受けました
。カプセル機2号とカプセル機3号の2台のカプセル機があります。ニアン22はカプセル機2号を使用し、ニアン33はカプセル玩具を使用しています。カプセルマシンNo.3。
コインカプセルマシンは必要ありませんが、特別な能力:
カプセルマシン2:プラグx(xの範囲が> 0 =正の整数)の場合ミニカプセルおもちゃは、2x +1番目の
ミニカプセルおもちゃマシンにねじることができますNo. 3:x(xの範囲は> = 0の正の整数)カプセルを差し込む
と、カプセルを手に持たずに2x + 222ニアンと33ニアンにねじることができます。計画。「順番にひねる」(最初に始める人は限定されず、ねじれた卵は相手に渡すことができます)、「最小」回数を使用して、正確に同じ回数だけねじることができるようにします。 Nそしてそれを小さなテレビマスターに渡してください。

説明を入力してください:

リトルTVマスターが必要とするN個のガシャポンを表す正の整数を入力します。

出力の説明:

文字列を出力します。各文字はガシャポンマシンを表し、文字には「2」と「3」のみを含めることができます。

例:

入る

10

出力

233

備考:

1 <= N <= 1e9

私の答え

import java.util.Scanner;

public class Main
{
    
    
	public static void main(String[] args)
    {
    
    
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        String s = "";
        
        while(N != 0)
        {
    
    
            if(N % 2 == 0)
            {
    
    
                N = (N - 2) / 2;
                s = "3" + s;
            }
            else
            {
    
    
                N = (N - 1) / 2;
                s = "2" + s;
            }
        }
        System.out.println(s);
    }
}

マイクロソフトチャイナ2021学校募集筆記試験の質問

(思い出+答えの一部)

行方不明のボウル

テーブルの上にN個のボウルが一列に並んでいます。各ボウルには、最初と最後のボウルのビー玉の数の合計が2番目と2番目の最後のボウルのビー玉の数の合計と等しくなるようにいくつかのビー玉が含まれています。ボウルは、ビー玉の数が多い順に保たれています。

しばらくすると、N-1個のボウルしかないことがわかりました。最初と最後のボウルはその位置にありますが、その間のボウルの1つがなくなっています。

N%2 == 0の場合、不足しているボウル内のビー玉の数を見つけます。

入力仕様:

input1:

N-1、ボウルの数

input2:

サイズN-1の配列で、各ボウルにビー玉の数を格納します。

出力仕様:

関数は、欠落しているボウル内のビー玉の数を返す必要があります。

例1:

input1:

5

input2:

{1,3,5,9,11}

出力

7

説明:

2つのボウルのビー玉の合計は12になるはずです。したがって、不足しているボウルはボウル4であり、7つのビー玉が含まれている必要があります。

例2:

input1:

5

input2:

{2,4,6,10,12}

出力

8

================================================== =

ラブレター

あなたは友達にラブレターを書きます。ただし、友達が読む前に、他の誰かがそれを受け取り、各単語の文字を左から右にK回回転させます。この文字のシフト後も同じままである単語の数を見つけます。

注:単語の間に複数のスペースを含めることができます。

入力仕様:

input1:

単語の文字列

input2:

K、回転が発生する回数

出力仕様:

関数は正しい単語の数を返す必要があります。

例1:

input1:

llohe ereth

input2:

2

出力

0

説明:

例1では、「lloheereth」は回転した文字列です。したがって、元の文字列は「hello there」でしたが、これは正しくありません。したがって、答えは0です。

例2:

input1:

君は

input2:

3

出力

1

説明:

例2では、​​「adaada」を3回転させると、「adaada」が返されます。したがって、答えは1です。

私の答え

import java.util.Scanner;

public class Main
{
    
    
	private static String rotate(String word,int K)
	{
    
    
		String str1 = word.substring(0, K);
		String str2 = word.substring(K);
		return str2 + str1;
	}
	
	public static void main(String[] args)
    {
    
    
        Scanner scanner = new Scanner(System.in);
        String input1 = scanner.nextLine();
        if(input1.trim().equals(""))
        {
    
    
        	 System.out.println(0);
        	 return;
        }
        int input2 = scanner.nextInt();
        int count = 0;
		String[] words = input1.trim().split("\\s+");
		for(int i = 0 ; i < words.length ; i++)
		{
    
    
			String cword = words[i].trim();
			int r = input2 % cword.length();
			if(r == 0)
			{
    
    
				count++;
			}
			else if(cword.equals(rotate(cword, r)))
			{
    
    
				count++;
			}
		}
		System.out.println(count);
	}
}

================================================== =

究極の戦い

ピッコロジュニアは彼の父、ピッコロ大王とまったく同じコピーであり、それは彼らがお互いの動きと攻撃の強さを知っていて、等しく強力であることを意味します。ピッコロジュニアは同数の攻撃を使用し、父親を尊重するために、父親の前に追加の攻撃を行うことはありません。

しかし、実際の攻撃はこのようには発生せず、悟空は過去を訪れ、攻撃シーケンスを変更しました。つまり、元の制約を維持する必要がある場合は、ピッコロジュニアの攻撃をピッコロ王の攻撃に置き換えました。

そのために必要な交換の最小数はいくつですか?

入力仕様:

input1:

キングは「K」、ジュニアは「J」を含むシーケンス。

出力仕様:

必要な交換の最小数を返します。これができない場合は、-1を返します。

例1:

input1:

JK

出力

2

説明:

キングが最初に攻撃する必要があるため、JをKに変更し、同じ数の攻撃を行うには、KをJに置き換える必要があります。

例2:

input1:

KKKK

出力

2

説明:

2番目と4番目の動きはJの動きに変更する必要があります。

おすすめ

転載: blog.csdn.net/qq_39517716/article/details/108368079