专栏首页村雨遥LeetCode 40.最小的k个数

LeetCode 40.最小的k个数

题目

面试题 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/

本文分享自微信公众号 - 村雨遥(cunyu1943),作者:村雨1943

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 时间复杂度与空间复杂度,看这一篇就够了!

    若存在函数 ,使得当 趋向无穷大时, 的极限值为不等于 0 的常数,则称 是 的同数量级函数,记作 ,称 为算法的渐进时间复杂度,简称 时间复杂度,用大...

    村雨遥
  • 数组的增删改查,你都会多少?

    作为重要的线性数据结构, 我们 i 经常会跟数组打交道,而对数组的增删改查则是日常用到的操作。

    村雨遥
  • Algorithm 数组的增删改查

    作为重要的线性数据结构, 我们 i 经常会跟数组打交道,而对数组的增删改查则是日常用到的操作。为了弄清楚这些常用操作,此博客则对这些操作进行一一梳理;

    村雨遥
  • [PHP] 看博客学习插入排序

    陶士涵
  • 算法--leetcode-283-移动零

    相当于是使用 for 进行交换的一个小技巧的练习,后面会给出一些算法的小技巧,都是总结的一些算法的小技巧。

    潇洒
  • 2 :基本语法

    六月的雨
  • 第四篇排序算法|二分查找

    现在回过头来想想学生时代的课程,可谓是用贬义词来形容,是自己的问题还是教学本身存在的问题,还是留给自己去思考和消化吧,因为每个人的故事都很不同。

    码农王同学
  • 冒泡排序

    用户6404053
  • 关于数组名的使用

    你会发现使用printf将这两个指针打印出来后,两者的值是一样的,那么他们俩到底有什么区别呢?

    HeaiKun
  • 蓝桥杯 基础练习 十六进制转八进制

      输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数...

    Debug客栈

扫码关注云+社区

领取腾讯云代金券