每天高频算法题-DAY3

news2024/11/26 17:34:12

题目一

在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

示例:

现有矩阵 matrix 如下:

[
  [1,   4,  7, 11, 15],
  [2,   5,  8, 12, 19],
  [3,   6,  9, 16, 22],
  [10, 13, 14, 17, 24],
  [18, 21, 23, 26, 30]
]

给定 target = 5,返回 true

给定 target = 20,返回 false


力扣https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/

加入目标数为25 我们从右上角开始查询  它列是有序的 也就是每行末尾的值是最大的 所以25>15

就能说明目标值肯定不在第一行里面... 一直判断到25>24 且<30 就能说明它在第五行里面

然后在这个行里面进行二分 找到值

 写完打大思路开始做题 做不出来 结论是 不要用二分 1如果用二分整体代码会十分复杂 

给大伙看一下我试图二分的代码(而且没写完)

 列方向上的二分还需要临时数组(贼麻烦)

然后这个是直接的遍历

class Solution {
    public static boolean findNumberIn2DArray(int[][] matrix, int target) {
			if(matrix.length == 0) {
			return false;
		}
		int row = 0;
		int col = matrix[0].length - 1;
		while (row < matrix.length && col > -1) {
			if (matrix[row][col] == target) {
				return true;
			} else if (matrix[row][col] > target) {
				col--;
			} else {
				row++;
			}
		}
		return false;
    }
}

题目二

有点飞仙题

有n个打包机器从左到右一字排开,上方有一个自动装置会抓取一批放物品到每个打包机上放到每个机器上的这些物品数量有多有少,由于物品数量不相同,需要工人将每个机器上的物品进行移动从而到达物品数量相等才能打包。每个物品重量太大、每次只能搬一个物品进行移动,为了省力,只在相邻的机器上移动。请计算在搬动最小轮数的前提下,使每个机器上的物品数量相等。如果不能使每个机器上的物品相同,返回-1。例如[1.0.5]表示有3个机器,每个机器上分别有1、0、5个物品,经过这些轮后:第一轮:1  0<- 5=>1 1 4第二轮:1<-1<-4=>2 1 3第三轮:2 1<-3=>2 2 2移动了3轮,每个机器上的物品相等,所以返回3例如[2.2.3]表示有3个机器,每个机器上分别有2、2、3个物品,这些物品不管怎么移动,都不能使三个机器上物品数量相等,返回-1

 首先狗都知道的是 如果当前包裹数不能被N整除的话可以直接排除掉

说实话这题连暴力解我都不会 还是看答案的

我们假定一个i位置 以这个位置分界 左侧右侧 假如说左侧有a个 那么想要平衡 左侧应该有 总数/机器数*左侧机器数 用它和实际包裹数相比较 如果多了 就应该往外仍 如果少了就应该拿(注意这个位置上本身也有包裹 但是先不考虑) 

原理就是 既然一次传送包裹 最多也就送一个 那么当前位置的扔的包裹和当前位置收的包裹取最大值 就等于当前位置的包裹绝对流动数(因为扔一个包裹和接收一个包裹是同时进行的) 那么我们遍历所有位置 找到的最大的包裹流动数 就是答案 因为有些地方包裹传送到一定位置就停在这里了 但是其他位置的传送还没停止 所以我们选一个最大的位置 一定是经历了所有传送的地方(如果我左边 传送几轮 右侧传送几轮呢 那也不影响啊 取最大值 那我左侧传送5轮 然后 右侧再传送六轮呢 共传送十一轮 你输出的结果是6轮啊 注意提给条件最小轮数)

coding的时候想想 这个数组 怎么做呢 直接暴力求的话 也要个O(N²) 

先求个累加和数组sum吧 然后每个位置就是 左侧的包裹数sum[i-1]    右侧的包裹数sum[i+1]-sum[i] 在按照原计划和之前的和N/arr.length * (i-1+1) 以及 N/arr.length * (arr.length-i-1)

题目三

给定一个数组arr长度为N,你可以把任意长度大于0且小于N的前缀作为左部分,剩下的作为右部分。但是每种划分下都有左部分的最大值和右部分的最大值,请返回最大的,左部分最大值减去右部分最大值的绝对值。

究极飞仙题

首先这个答案肯定是 整个数组的最大值-某个值对吧 不可能说 我明明可以用最大值减 而去用更小的 那不纯浪费吗 (是不是感觉哪不对 又说不清? 那如果最小值和最大值分在一边了 那我岂不是就减不到最小值了? 事实上是不会出现这种情况的 每两个元素即使是相邻的元素 只要你想 就可以分在不同的两边) 

最大值确定一定要有了 那另一个呢?

哎 最尿性的来了啊 我们选择第一个和最后一个数组元素里面 更小的那个(对应最大值为左半部分和对应最大值为右半部分) 假如啊 我们的数组最大值 为左侧 那么右侧怎么看呢 我们肯定要找一个最小的最大值吧?如果这个N-1位置的值为右侧最大值 那么左边有比它大的不考虑 因为这不是最大值最小的情况 那如果N-1右侧有比它小的呢? 那它那他也不是最大值(不是说我可以选择两个部分啊 一半部分敲定了之后 另一半也就确定了 剩下的全是另一半)

8 9 4 3  我不可能把4留着吧? 我肯定得把4放在最大值那一边去 8 9  0 3 这咋画 也是3为右侧最大值 0划分到左侧没有最大值大 划分到右侧没有最边界的值大 

然后最大值分到右侧同理

捋一捋思路 遍历数组找一个最大值 然后最大值减去两个边界0 N-1的值中的更小值 为答案

这题还要code???

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

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

相关文章

电路分析 day01 一种使能控制电路

本次分析的电路为 一种使能控制电路 &#xff08;站在别人的肩膀上学习&#xff09; 资料来源 &#xff1a; 洛阳隆盛科技有限责任公司的专利 申请号&#xff1a;CN202022418360.7 1.首先查看资料了解本次电路 1.1 电路名称&#xff1a; 一种使能控制电路 1.2 电路功能…

Can转RTU网关can总线转以太网设备

YC-CAN-RTU 是一款用于 CAN-Modbus 现场总线与 RS-232 总线或 RS-485 总线之间数据转换的协议型转换器&#xff0c;支持标准 Modbus RTU 协议。集成 1 路RS-232 通道、1 路RS-485 通道、1 路CAN-Modbus 通道&#xff0c;可以方便地嵌入使用 RS-232 接口和 RS-485 接口的节点上&…

通过层级列表循环生成树结构

列表生成树结构 应用 前提: 列表有字段能表示所处层级(如Deep、Level).根据自己业务来。主要是针对列表对象来处理&#xff0c;组织成树结构。如下图&#xff1a; 在得到如图类似数据后&#xff0c;采取使用函数来组织树结构&#xff0c;同时生成层级序号&#xff08;1&…

TCP 与UDP区别

目录 网络参考模型TCPTCP 是什么特点 UDPUDP 是什么特点 TUP与UDP区别 总结什么时候选TCP or UDP 网络参考模型 TCP TCP 是什么 传输控制协议&#xff08;TCP&#xff09;是TCP/IP模型的传输层协议。它是一个面向连接的协议。因此&#xff0c;协议首先在源和目标之间建立连接…

《面试1v1》Redis内存优化

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

WEB阶段_HTML(附代码笔记)

&#xff08;一&#xff09;案例一&#xff1a;网站信息页面的显示 1、HTML文档的创建 <html><head><title>01-HTML的文件创建&#xff08;浏览器标签显示的名字&#xff09;</title></head><body><h2>你好</h2></body>…

点云3D检测算法-Point pillar踩坑日记

工程地址&#xff1a; https://github.com/nutonomy/second.pytorch 1.环境搭建&#xff0c;跟着官网的教程走 1.1注意官网上的这条语句&#xff0c;存在一些坑 conda install pytorch torchvision -c pytorch 它会重新安装cudatoolkit和cudnn&#xff0c;版本可能很老旧&…

libtorch 调用模型方法

libtorch 是 pytorch 的 C 版本&#xff0c;支持 CPU 端和 GPU 端的模型部署。相较于用 tensorrt 部署 pytorch 模型&#xff0c;用 libtorch的优势在于&#xff1a;pytorch 和 libtorch 同属一个生态&#xff0c;API 语句比较接近&#xff0c;并且不会出现某网络层不支持的问题…

面试官:请求转发和请求重定向有什么区别?

在 Java 中&#xff0c;跳转的实现方式有两种&#xff1a;请求转发和请求重定向&#xff0c;但二者是完全不同的&#xff0c;所以我们今天就来盘它。请求转发和请求重定向主要区别&#xff0c;包含以下 5 点&#xff1a; 定义不同 跳转方不同 数据共享不同 最终 URL 地址不同…

路径规划算法:基于侏儒猫鼬优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于侏儒猫鼬优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于侏儒猫鼬优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

常见面试题之List集合

1. 数组 1.1 数组概述 数组&#xff08;Array&#xff09;是一种用连续的内存空间存储相同数据类型数据的线性数据结构。 int[] array {22,33,88,66,55,25};我们定义了这么一个数组之后&#xff0c;在内存的表示是这样的&#xff1a; 现在假如&#xff0c;我们通过arrar[1]…

Java基础---传递拷贝

目录 Java是值传递还是引用传递 什么是深拷贝和浅拷贝 浅拷贝案例解析 BeanUtils的浅拷贝 实现深拷贝 深拷贝案例解析 Java是值传递还是引用传递 编程语言中需要进行方法间的参数传递&#xff0c;这个传递的策略叫做求值策略在程序设计中&#xff0c;求值策略有很多种&am…

【PHP面试题33】include和require的区别及用法

文章目录 一、前言二 、include和require的区别三、include和require的用法介绍3.1 include的用法3.2 require的用法及示例 四、include和require的用法示例4.1 包含文件4.2 包含文件并将结果赋值给变量4.3 动态包含文件4.4 使用绝对路径包含文件4.5 包含文件失败处理4.6 包含文…

数据库--->MySQL(1)【MySQL索引】

文章目录 MySQL的优点视图MySQL的存储过程与函数触发器MySQL的基本架构MySQL的引擎InnoDBMyISAM总结 索引什么是索引&#xff1f;索引的优缺点索引底层数据结构索引的分类创建索引的原则 MySQL的优点 MySQL 主要具有下面这些优点&#xff1a; 成熟稳定&#xff0c;功能完善。开…

分布式应用之Zookeeper和Kafka

分布式应用之Zookeeper和Kafka 一、Zookeeper 1.定义 分布式系统管理框架&#xff0c;主要用来解决分布式集群中应用系统的一致性问题 相当于各种分布式应用服务的 注册中心 文件系统 通知机制2.特点 &#xff08;1&#xff09;Zookeeper&#xff1a;一个领导者&#…

Qt| There‘s no Qtversion assigned to project... 解决方法

问题&#xff1a; 原因&#xff1a;相同工程在不同电脑下qt配置不一致导致&#xff0c;该项目qt setting设置有误。 解决方法&#xff1a;右键项目打开属性 找到Qt Project Settings->Qt Installation&#xff0c;切换到当前电脑所使用的qt版本即可。

【学习笔记】在Android使用Frida进行https抓包

最近需要在Android进行https抓包&#xff0c;对数据解密&#xff0c;找了很多方法&#xff0c;终于成功了&#xff0c;不过原文一些步骤对于我这个小白还是有点不理解的地方&#xff0c;在此记录一下。 1. 前提条件 一台root手机frida环境 2. frida环境搭建 该步骤全程参考&…

基于springboot或ssm的红色新闻系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

【已解决】VMware安装MacOS苹果虚拟机,开机后卡在苹果图标位置不动

我的计算机硬件与软件信息&#xff1a; Win11系统&#xff0c;VMware17&#xff0c;MacOS12 最近在VMware17上安装MacOS12苹果虚拟机时&#xff0c;前期所有内容都配置好之后&#xff0c;在开机时碰到了一个问题&#xff1a;开机后卡在苹果图标位置不动&#xff0c;即使等了一…

2023年Mac上有哪些优质的工具(一)

Downie 4 专门用来下载视频的&#xff0c;各大视频网站上的视频只要粘贴地址就可以直接下载&#xff0c;并且可以选择清晰度&#xff0c;再也不用受百度云的气了&#xff0c;下载速度非常快&#xff0c;让工作效率大大提高。 Xmind 大家熟知的一款思维导图软件&#xff0c;他…