LeetCode 40. 最小的k个数

题目

面试题40. 最小的k个数

描述

输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4

解题思路

  1. 现将传入的数组arr进行排序(任意排序方法皆可,此处采用冒泡);

  2. 新定义一个最终结果的int型数组resultArr,长度为传入的k

  3. 将排序好的数组的前k个值传入上一步中所定义的数组resultArr中;

  4. 返回最终结果数组resultArr

实现

/**
 * Created with IntelliJ IDEA.
 * Version : 1.0
 * Author  : cunyu
 * Email   : [email protected]
 * Website : https://cunyu1943.github.io
 * Date    : 2020/3/20 12:37
 * Project : LeetCode
 * Package : PACKAGE_NAME
 * Class   : Forty
 * Desc    : 40. 最小的k个数
 */

import java.util.ArrayList;
import java.util.Arrays;

public class Forty {
	public static void main(String[] args) {
		Forty forty = new Forty();
		int[] array = {3,4,5,2,1,29,44,12};
		int count = 4;
		for (int item: forty.getLeastNumbers(array, count)){
			System.out.println(item);
		}
	}

	public int[] getLeastNumbers(int[] arr, int k) {
//		排序数组,冒泡排序
		for(int i = 0; i < arr.length - 1; i++){
			for (int j = 0; j < arr.length - 1 - i; j++){
				if (arr[j] > arr[j + 1]){
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}

		int[] resultArr = new int[k];
		for (int m = 0; m < k; m++){
			resultArr[m] = arr[m];
		}
		return resultArr;
	}
}

发布了104 篇原创文章 · 获赞 69 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/github_39655029/article/details/104988175
今日推荐