LeetCode 180周赛

本次LeetCode 180周赛难度升级,重点考察数据结构应用。矩阵中的幸运数问题证明唯一性,暴力解决可达O(n^3)。设计增量操作的栈,模拟实现相关操作。将二叉搜索树变平衡,避免误解为平衡树问题,通过中点重建法保持搜索树性质。最大的团队表现值问题,采用堆优化算法,以O(nlogk)复杂度求解。
摘要由CSDN通过智能技术生成

紧张而刺激的力扣180周赛结束了。个人认为这次的比赛相较于上一次更难一些,对数据结构的要求更高了。

矩阵中的幸运数

题目
其实是求矩阵中的鞍点,题目中需要返回所有的鞍点,也像样的将返回设定为list。
但其实可以证明的是,在各个元素各不相同的矩阵中,若有鞍点则仅有一个。
利用反证法:
假设存在两个鞍点a[x1][y1],a[x2][y2],易得x1≠x2,y1≠y2。
则由规则可得

  • a[x1][y1] > a[x2][y1] > a[x2][y2],即 a[x1][y1] > a[x2][y2]
  • a[x1][y1] < a[x1][y2] < a[x2][y2],即 a[x1][y1] < a[x2][y2]

两点结论矛盾,故不存在多于一个的鞍点

至于程序,由数据范围可知O(n^3)的暴力是可以通过的。
代码:

class Solution {
   
    int n,m;
	private boolean check(int x,int y,int[][] a)
	{
   
		for(int i = 0;i < n;i++)
		{
   
			if(a[i][y] > a[x][y])
			{
   
				return false;
			}
		}
		for(int j = 0;j < m;j++)
		{
   
			if(a[x][j] < a[x][y])
			{
   
				return false;
			}
		}
		return true;
	}
	
	public List<Integer> luckyNumbers (int[][] matrix) {
   
		ArrayList<Integer> list = new ArrayList();
		n = matrix.length;
		m = matrix
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值