LeetCode 1198. 找出所有行中最小公共元素(二分/合并有序链表)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 按列遍历
      • 2.2 二分查找
      • 2.3 合并k个有序链表

1. 题目

给你一个矩阵 mat,其中每一行的元素都已经按 递增 顺序排好了。
请你帮忙找出在所有这些行中 最小的公共元素。

如果矩阵中没有这样的公共元素,就请返回 -1。

示例:
输入:mat = [[1,2,3,4,5],[2,4,5,8,10],[3,5,7,9,11],[1,3,5,7,9]]
输出:5提示:
1 <= mat.length, mat[i].length <= 500
1 <= mat[i][j] <= 10^4
mat[i] 已按递增顺序排列。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-smallest-common-element-in-all-rows
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 按列遍历

  • 按列遍历,计数,最先达到行数的就是答案
class Solution {
public:int smallestCommonElement(vector<vector<int>>& mat) {int m = mat.size(), n = mat[0].size();int count[10001] = {0};for(int j = 0, i; j < n; ++j){for(i = 0; i < m; ++i){if(++count[mat[i][j]] == m)return mat[i][j];}}return -1;}
};

180 ms 24.2 MB

2.2 二分查找

  • 依次对第一行的每个元素在其他行进行二分查找,都找到了,就是答案

代码略

2.3 合并k个有序链表

类似的思想

class Solution {
public:int smallestCommonElement(vector<vector<int>>& mat) {int m = mat.size(), n = mat[0].size(), i = 0, cur = mat[0][0], count = 1;vector<int> idx(m,0);//每行遍历到的位置while(1){i = (i+1)%m;//循环遍历每行while(idx[i] < n && mat[i][idx[i]] < cur)idx[i]++;//找curif(idx[i] >= n)//找完了,没找到return -1;else if(mat[i][idx[i]]==cur){	//找到了count++;idx[i]++;}else if(mat[i][idx[i]] > cur){	//没找到,那就以当前数,重新找cur = mat[i][idx[i]];count = 1;idx[i]++;}if(count == m)//出现m次的,返回return cur;}return -1;}
};

200 ms 24.4 MB


长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 分布式系统 面试_分布式系统的面试题9

1、面试题分布式服务接口请求的顺序性如何保证&#xff1f;2、面试官心里分析其实分布式系统接口的调用顺序&#xff0c;也是个问题&#xff0c;一般来说是不用保证顺序的。但是有的时候可能确实是需要严格的顺序保证。给大家举个例子&#xff0c;你服务A调用服务B&#xff0c;…

Windows phone 应用开发[14]-调用WebBrowser

很久没有更新博客了.最近一直陷身在项目中难以有时间抽身梳理总结.关于博客确实很多想写的主题.节前大概草草 的梳理一下大概就有十几个主题.只能趁着放假的时间来逐渐把这批文章力所能及系统的更新出来. 主要涉及到我们团队现在Windows phone 项目开发中实际碰到一些问题和对应…

LeetCode 369. 给单链表加一(递归)

文章目录1. 题目2. 解题1. 题目 用一个 非空 单链表来表示一个非负整数&#xff0c;然后将这个整数加一。 你可以假设这个整数除了 0 本身&#xff0c;没有任何前导的 0。 这个整数的各个数位按照 高位在链表头部、低位在链表尾部 的顺序排列。 示例: 输入: [1,2,3] 输出: …

LeetCode 1430. 判断给定的序列是否是二叉树从根到叶的路径(递归)

文章目录1. 题目2. 解题1. 题目 给定一个二叉树&#xff0c;我们称从根节点到任意叶节点的任意路径中的节点值所构成的序列为该二叉树的一个 “有效序列” 。 检查一个给定的序列是否是给定二叉树的一个 “有效序列” 。 我们以整数数组 arr 的形式给出这个序列。 从根节点到…

LeetCode 362. 敲击计数器(map)

文章目录1. 题目2. 解题1. 题目 设计一个敲击计数器&#xff0c;使它可以统计在过去5分钟内被敲击次数。 每个函数会接收一个时间戳参数&#xff08;以秒为单位&#xff09;&#xff0c;你可以假设最早的时间戳从1开始&#xff0c;且都是按照时间顺序对系统进行调用&#xff…

a算法TSP旅行商java_A*算法实现旅行商问题(人工智能报告,付代码)

一、问题描述“旅行商问题”常被称为“旅行推销员问题”&#xff0c;是指一名推销员要拜访多个地点时&#xff0c;如何找到在拜访每个地点一次后再回到起点的最短路径。规则虽然简单&#xff0c;但在地点数目增多后求解却极为复杂。旅行商问题在本实验中的具体化&#xff1a;从…

windows phone 7 中文天气预报应用--来源http://www.cnblogs.com/liulunet/archive/2011/08/17/2141696.html...

windows phone 7 中文天气预报应用wp7的应用还是太少了&#xff0c;中文应用更少。虽然有天气预报应用但是自己感觉并不好用&#xff0c;感觉这样的程序应该很简单&#xff0c;于是萌生了自己写一个的想法。 印证了群里朋友说的一句话&#xff1a;程序员往往都是使用别人的程序…

LeetCode 666. 路径和 IV(树的遍历)

文章目录1. 题目2. 解题1. 题目 对于一棵深度小于 5 的树&#xff0c;可以用一组三位十进制整数来表示。 对于每个整数&#xff1a; 百位上的数字表示这个节点的深度 D&#xff0c;1 < D < 4。十位上的数字表示这个节点在当前层所在的位置 P&#xff0c; 1 < P <…

Prim最小生成树算法

在一个具有几个顶点的连通图G中&#xff0c;如果存在子图G包含G中所有顶点和一部分边&#xff0c;且不形成回路&#xff0c;则称G为图G的生成树&#xff0c;代价最小生成树则称为最小生成树。 许多应用问题都是一个求无向连通图的最小生成树问题。例如&#xff1a;要…

LeetCode 1214. 查找两棵二叉搜索树之和(二叉树迭代器+双指针)

文章目录1. 题目2. 解题1. 题目 给出两棵二叉搜索树&#xff0c;请你从两棵树中各找出一个节点&#xff0c;使得这两个节点的值之和等于目标值 Target。 如果可以找到返回 True&#xff0c;否则返回 False。 示例 1&#xff1a; 输入&#xff1a;root1 [2,1,4], root2 [1,…

LeetCode 323. 无向图中连通分量的数目(并查集)

文章目录1. 题目2. 解题1. 题目 给定编号从 0 到 n-1 的 n 个节点和一个无向边列表&#xff08;每条边都是一对节点&#xff09;&#xff0c;请编写一个函数来计算无向图中连通分量的数目。 示例 1: 输入: n 5 和 edges [[0, 1], [1, 2], [3, 4]]0 3| |1…

LeetCode 1120. 子树的最大平均值(DFS自底向上)

文章目录1. 题目2. 解题1. 题目 给你一棵二叉树的根节点 root&#xff0c;找出这棵树的 每一棵 子树的 平均值 中的 最大 值。 子树是树中的任意节点和它的所有后代构成的集合。 树的平均值是树中节点值的总和除以节点数。 示例&#xff1a;输入&#xff1a;[5,6,1] 输出&a…

LeetCode 1100. 长度为 K 的无重复字符子串(滑动窗口)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 S&#xff0c;找出所有长度为 K 且不含重复字符的子串&#xff0c;请你返回全部满足要求的子串的 数目。 示例 1&#xff1a; 输入&#xff1a;S "havefunonleetcode", K 5 输出&#xff1a;6 解释&#xff1a; 这…

java点击按钮结线程_多线程的Java应用程序在调试工具Netbeans中单击“停止”按钮时输出一个奇怪的结果...

我使用wait()和notify()机制学习了java中的多线程。但我很好奇输出一个简单的多线程Java应用程序。代码如下&#xff1a;class Q {int n;boolean valueSet false;synchronized int get() {if (!valueSet) {try {wait();} catch (InterruptedException e) {System.out.println(…

LeetCode 544. 输出比赛匹配对(NBA季后赛对阵图)

文章目录1. 题目2. 解题1. 题目 在 NBA 季后赛中&#xff0c;我们总是安排较强的队伍对战较弱的队伍&#xff0c;例如用排名第 1 的队伍和第 n 的队伍对决&#xff0c;这是一个可以让比赛更加有趣的好策略。 现在&#xff0c;给你 n 支队伍&#xff0c;你需要以字符串格式输出…

LeetCode 1428. 至少有一个 1 的最左端列(二分查找)

文章目录1. 题目2. 解题2.1 二分查找2.2 直接走阶梯1. 题目 &#xff08;这是一个交互题&#xff09; 我们称只包含元素 0 或 1 的矩阵为二进制矩阵。 矩阵中每个单独的行都按非递减顺序排序。 给定一个这样的二进制矩阵&#xff0c;返回至少包含一个 1 的最左端列的索引&am…

LeetCode 370. 区间加法(差分思想)

文章目录1. 题目2. 解题1. 题目 假设你有一个长度为 n 的数组&#xff0c;初始情况下所有的数字均为 0&#xff0c;你将会被给出 k​​​​​​​ 个更新的操作。 其中&#xff0c;每个操作会被表示为一个三元组&#xff1a;[startIndex, endIndex, inc]&#xff0c;你需要将…

LeetCode 1256. 加密数字(bitset)

文章目录1. 题目2. 解题1. 题目 给你一个非负整数 num &#xff0c;返回它的「加密字符串」。 加密的过程是把一个整数用某个未知函数进行转化&#xff0c;你需要从下表推测出该转化函数&#xff1a; 示例 1&#xff1a; 输入&#xff1a;num 23 输出&#xff1a;"10…

java执行程序默认多线程吗_Java多线程 执行程序(1)

本文由作者收集整理所得&#xff0c;作者不保证内容的正确行&#xff0c;转载请标明出处。作者&#xff1a;关新全Java多线程执行程序(1)1.1Thread类static Thread.currentThread返回当前正在执行的线程对象的引用。join 等待线程终止。yield 暂停当前正在执行的线程对象&#…

LeetCode 531. 孤独像素 I

文章目录1. 题目2. 解题1. 题目 给定一幅黑白像素组成的图像, 计算黑色孤独像素的数量。 图像由一个由‘B’和‘W’组成二维字符数组表示, ‘B’和‘W’分别代表黑色像素和白色像素。 黑色孤独像素指的是在同一行和同一列不存在其他黑色像素的黑色像素。 示例: 输入: [[W,…