首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 40.最小的k个数

LeetCode 40.最小的k个数

作者头像
村雨遥
发布2020-03-24 10:54:41
3730
发布2020-03-24 10:54:41
举报
文章被收录于专栏:JavaParkJavaPark

题目

面试题 40. 最小的 k 个数[1]

描述

输入整数数组 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   : cunyu1024@foxmail.com
 * 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;
	}
}

参考资料

[1]

面试题40. 最小的k个数: https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 村雨遥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 描述
  • 解题思路
  • 实现
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档