2021-08-13:给定一个每一行有序、每一列也有序,整体可能无序的二维数组 ,在给定一个正数k,返回二维数组中,最小的第k个数。

福大大 答案2021-08-13:

二分法。

代码用golang编写。代码如下:

package main

import (
"fmt"
"math"
) func main() {
matrix := [][]int{{1, 2, 3}, {2, 3, 4}, {3, 4, 5}}
ret := kthSmallest2(matrix, 8)
fmt.Println(ret)
} // 二分的方法
func kthSmallest2(matrix [][]int, k int) int {
N := len(matrix)
M := len(matrix[0])
left := matrix[0][0]
right := matrix[N-1][M-1]
ans := 0
for left <= right {
mid := left + ((right - left) >> 1)
// <=mid 有几个 <= mid 在矩阵中真实出现的数,谁最接近mid
info := noMoreNum(matrix, mid)
if info.num < k {
left = mid + 1
} else {
ans = info.near
right = mid - 1
}
}
return ans
} type Info struct {
near int
num int
} func NewInfo(n1 int, n2 int) *Info {
ans := &Info{}
ans.near = n1
ans.num = n2
return ans
} func noMoreNum(matrix [][]int, value int) *Info {
near := math.MinInt64
num := 0
N := len(matrix)
M := len(matrix[0])
row := 0
col := M - 1
for row < N && col >= 0 {
if matrix[row][col] <= value {
near = getMax(near, matrix[row][col])
num += col + 1
row++
} else {
col--
}
}
return NewInfo(near, num)
} func getMax(a int, b int) int {
if a > b {
return a
} else {
return b
}
}

执行结果如下:


左神java代码

2021-08-13:给定一个每一行有序、每一列也有序,整体可能无序的二维数组 ,在给定一个正数k,返回二维数组中,最小的第k个数。的更多相关文章

  1. 算法---数组总结篇2——找丢失的数,找最大最小,前k大,第k小的数

    一.如何找出数组中丢失的数 题目描述:给定一个由n-1个整数组成的未排序的数组序列,其原始都是1到n中的不同的整数,请写出一个寻找数组序列中缺失整数的线性时间算法 方法1:累加求和 时间复杂度是O(N ...

  2. 找出一堆数中最小的前K个数

    描写叙述: 给定一个整数数组.让你从该数组中找出最小的K个数 思路: 最简洁粗暴的方法就是将该数组进行排序,然后取最前面的K个数就可以. 可是,本题要求的仅仅是求出最小的k个数就可以,用排序能够但显然 ...

  3. 2021.08.09 P5658 括号树(树形结构)

    2021.08.09 P5658 括号树(树形结构) [P5658 CSP-S2019] 括号树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 太长,在链接中. 分析及代码 ...

  4. 转:最小区间:k个有序的数组,找到最小区间使k个数组中每个数组至少有一个数在区间中

    转:http://www.itmian4.com/thread-6504-1-1.html 最小区间原题 k个有序的数组,找到最小的区间范围使得这k个数组中,每个数组至少有一个数字在这个区间范围内.比 ...

  5. 求一个数组中最小的K个数

    方法1:先对数组进行排序,然后遍历前K个数,此时时间复杂度为O(nlgn); 方法2:维护一个容量为K的最大堆(<算法导论>第6章),然后从第K+1个元素开始遍历,和堆中的最大元素比较,如 ...

  6. 求给定数据中最小的K个数

    public class MinHeap { /* * * Top K个问题,求给定数据中最小的K个数 * * 最小堆解决:堆顶元素为堆中最大元素 * * * */ private int MAX_D ...

  7. 设计一个算法,求非空二叉树中指定的第k层(k&gt;1)的叶子节点的个数

    思想:採用基于层序遍历的方法. 用level扫描各层节点,若某一层的节点出队后.rear指向该层中最右节点.则将rear赋值给last(对于第一层.last=1).在出队时,若front=last,表 ...

  8. 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组

    题目描述: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明:初始化 nums1 和 nums2 的元素数量分别为 m ...

  9. 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。

    谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数. Google2009华南地 ...

  10. 给定一个整数数组 nums 和一个目标值 target,求nums和为target的两个数的下表

    这个是来自力扣上的一道c++算法题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案 ...

随机推荐

  1. Javaweb学习笔记第四弹

    JDBC API详解 1.DriverManager作用: 1.注册驱动 registerDriver 2.获取数据库连接 getConnection 参数:1.url jdbc:mysql://lo ...

  2. 全网最详细中英文ChatGPT接口文档(四)30分钟快速入门ChatGPT——Models模型

    @ 目录 Models Overview 概述 GPT-4 Limited beta GPT-3.5 Feature-specific models 特定功能的模型 Finding the right ...

  3. 思必驰周强:AI 和传统信号技术在实时音频通话中的应用

    如何用 AI 解决声音传输&处理中的三大问题?三大问题又是哪三大问题? 在「RTE2022 实时互联网大会」中,思必驰研发总监 @周强以<AI 和传统信号技术在实时音频通话中的应用> ...

  4. JUC源码学习笔记8——ConcurrentHashMap源码分析1 如何实现低粒度锁的插入,如何实现统计元素个数,如何实现并发扩容迁移

    源码基于jdk1.8 这一片主要讲述ConcurrentHashMap如何实现低粒度锁的插入,如何实现统计元素个数,如何实现并发扩容迁移 系列文章目录和关于我 一丶ConcurrentHashMap概 ...

  5. vite项目生产环境去掉console信息【转载】

    环境变量引入 通常去掉console为生产环境,即需要引入环境变量.具体请看这篇文章: vite项目初始化之~环境变量 注意 与webpacak相比,vite已经将这个功能内置到了,所以我们只需要配置 ...

  6. Windows10彻底关闭自动更新

    此文操作流程只针对于Windows10 1803及以下版本,更新版本未测试. Windows10在本地组策略编辑器禁用了自动更新,系统依然会在某个时候触发自动更新,怎么办呢,方法来了. 这个方法是结合 ...

  7. 7.远程代码执行漏洞RCE

    远程代码执行漏洞RCE 1.RCE Remote Code Execute 远程代码执行 Remote Command Execute 远程命令执行 2.危害 窃取服务器的敏感数据.文件 对电脑的文件 ...

  8. 全网最详细中英文ChatGPT-GPT-4示例文档-事实性回答应用从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

    目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...

  9. ACM-学习记录-尺取法

    题目 给定一个数组和一个数s,在这个数组中找一个区间,使得这个区间之和等于s. 例如:给定的数组int x[14] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...

  10. CTF-Web-PHP反序列化

    概念解释 PHP 反序列化漏洞又叫做 PHP 对象注入漏洞,我觉得这个表达很不直白,也不能说明根本的问题,不如我们叫他 PHP 对象的属性篡改漏洞好了(别说这是我说的~~) 反序列化漏洞的成因在于代码 ...