【LeetCode每日一题】2024年8月第一周(下)

 2024.8.03 中等


链接:3143. 正方形中的最多点数

(1)题目描述:

(2)示例

(3)分析

        题目中以s字符串中:相同的字母 为限制,要求方格内只包含不同字母对应的点位。

由此推论:==> 

        ① 方格大小由相同元素中最近的决定,但注意:不是直接取得点位最小值,而是正好去除包含2个时的边界情况,即为:取第二小点位的值

        ② 点位(x,y)的坐标绝对值,决定方格大小,取值的时候需要对(x,y)的绝对值取max最大

        ③ 结合以上内容,得出采取 数组+集合的方式,使用它的方法来完成。

(4)代码

import static java.lang.Math.*;class Solution {public int maxPointsInsideSquare(int[][] points, String s) {//对题目进行分析,如果有2个相同位:返回最大值-1;2个以上的:返回第二小-1即可。--> 满足只有一个得要求//所以接下来难的就是,如何存和排序了,采用数组+集合形式int[] str = new int[26]; // 统计哪一个位置出现次数超过2次int min = Integer.MAX_VALUE;int sum = 0;List<Integer>[] array = new List[27];//记录,每一个字母出现位置对应的值,因为for (int i = 0; i < 27; i++) {array[i] = new ArrayList<>(); // 初始化每个List}if (s.length() == 1)  return 1;for (int i = 0; i < s.length(); i++) {// i:第几位数字int num = s.charAt(i) - 'a';str[num] += 1; // 更新出现次数array[num].add(max(abs(points[i][0]), abs(points[i][1])));//记录当前值}for (int i = 0; i < 26; i++) {array[26].add(cheek(array, i, str[i]));// 获取所有去到的}min = array[26].stream().sorted().collect(Collectors.toList()).get(0);for (int[] p : points) {if (max(abs(p[0]), abs(p[1])) <= min) {sum++;}}return sum;}public int cheek(List<Integer>[] array, int num, int temp) {List<Integer> min = array[num].stream().sorted((a, b) -> b - a).collect(Collectors.toList());if (temp > 1)return min.get(temp - 2) - 1;return Integer.MAX_VALUE;}
}

(5)碎碎念

        这是昨天(8.3)写的,这两天热感冒,状态不佳。写的时间很长,而且写的时候,基本是根据卡的用例来一步步完善的,所以代码整体不是那么连贯。

  2024.8.04 简单


链接:572. 另一棵树的子树

(1)题目描述:

(2)示例

(3)分析

        思路1:题目当中,让我们判断是否位子树,那么我首先想到的是字符串比较。只要包含在内即可,那么就引出一个问题,如何得到字符串?

        ==>   遍历,用中序遍历,这样左右分支皆可分开进行比对。

        当然,不能单纯的比对,需要按照完全二叉树的形式来,空的部分以null填充,从而真正满足:字符串比对即为是否为子树的判断。 

        思路2:比对时,很明显,必须是大树的左子树或右子树与子树相同,或者直接两者一样!。那么只要递归比较一下是否相等就行了。

(4)代码

//这是思路1:字符串比对/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {//直接对其进行中序遍历,按字符串比较==》注意:必须是用完全二叉树来做public boolean isSubtree(TreeNode root, TreeNode subRoot) {String sbR =',' + getTreeToString(root, new StringBuilder()).toString();String sbT =',' + getTreeToString(subRoot, new StringBuilder()).toString();// *** ','很重要!*** 可防止判断时仅仅是位数上存在相同,如12 2这种if (sbR.contains(sbT))return true;return false;}public StringBuilder getTreeToString(TreeNode tree, StringBuilder sb) {//按照的类似是完全二叉树补全,空的填null,直接比对即可if (tree == null) {sb.append("null").append(',');} else {sb.append(tree.val).append(',');getTreeToString(tree.left, sb);// 先左,而中间,后右getTreeToString(tree.right, sb);}return sb;}}
//这是思路2:直接子树比较class Solution {public boolean isSubtree(TreeNode root, TreeNode subRoot) {if (root == null) {return subRoot == null;}if (isSameTree(root, subRoot)) {return true;}return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);}private boolean isSameTree(TreeNode s, TreeNode t) {if (s == null && t == null) {return true;}if (s == null || t == null) {return false;}if (s.val != t.val) {return false;}return isSameTree(s.left, t.left) && isSameTree(s.right, t.right);}}

两者比较:(左思路1,右思路2)

(5)碎碎念

简单题?emm,从有思路到实现,似乎还是花了些时间的,主要是我之前对树了解的不太多吧~

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

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

相关文章

YOLOv8添加注意力模块并测试和训练

YOLOv8添加注意力模块并测试和训练 参考bilibili视频 yolov8代码库中写好了注意力模块&#xff0c;但是yolov8的yaml文件中并没用使用它&#xff0c;如下图的通道注意力和空间注意力以及两者的结合CBAM&#xff0c;打开conv.py文件可以看到&#xff0c;其中包含了各种卷积块的…

【机器学习第7章——贝叶斯分类器】

机器学习第7章——贝叶斯分类器 7.贝叶斯分类器7.1贝叶斯决策论7.2 朴素贝叶斯分类器条件概率的m估计 7.3 极大似然估计优点基本原理 7.4 贝叶斯网络7.5 半朴素贝叶斯分类器7.6 EM算法7.7 EM算法实现 7.贝叶斯分类器 7.1贝叶斯决策论 一个医疗判断问题 有两个可选的假设&#…

校园商铺管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;商品类型管理&#xff0c;商品信息管理&#xff0c;在线咨询管理&#xff0c;咨询回复管理&#xff0c;交流论坛&#xff0c;系统管理 微信端账号功能包括&a…

【Verilog-CBB】开发与验证(4)——RS前向打拍器

引言 我们知道时序路径的建立时间收敛依赖于触发器之间的组合逻辑延迟&#xff0c;以及时钟周期。对于一个确定的设计一般来说&#xff0c;时钟频率不会有太多的让步&#xff0c;因此修时序的时候主要发力点就是减小触发器之间组合逻辑延迟。一方面可以通过组合逻辑优化来降低…

Chapter 22 数据可视化——折线图

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、Pyecharts介绍二、安装Pyecharts三、全局配置项四、绘制折线图 前言 在大数据时代&#xff0c;数据可视化成为了分析和展示数据的重要手段。Pyecharts 是一个基于 …

python open cv(图像处理的基本操作)

概要图 1读取图像 cv2.imread() 函数是OpenCV库中用于读取图像文件的函数。它有两个参数&#xff1a; 文件名&#xff1a;这是第一个也是必需的参数&#xff0c;它指定了要读取的图像文件的路径和文件名。这个路径可以是相对路径&#xff0c;也可以是绝对路径。 标志&#xf…

【practise】只出现一次的数字

现在给你一个数组&#xff0c;里面放了一些数字&#xff0c;里面都是两两成对&#xff0c;只有一个数字是单独的&#xff0c;要求找出其中只出现一次的数字。相必这道题是非常简单了&#xff0c;有很多解法比如说用暴力求解&#xff1f;比如说用位运算&#xff1f;甚至说用哈希…

【C++标准模版库】list的介绍及使用

list 一.list的介绍二.list的使用1.list 构造函数2.list 空间大小3.list 增删查改4.list 迭代器的使用1.正向迭代器2.反向迭代器 5.list 其他成员函数 三.vector与list关于sort性能的比较 一.list的介绍 C中的list标准模板库&#xff08;STL&#xff09;是C标准库中的一个重要组…

PCL1.11.0下载安装(Windows)

PCL1.11.0下载安装&#xff08;Windows&#xff09; PCL安装需要的几个模块如下图所示&#xff1a; 一、PCL1.11.0下载 PCL以1.11.0版本为例&#xff0c;打开下载连接&#xff08;PCL下载&#xff09; 下载PCL-1.11.0-AllInOne-msvc2019-win64.exe和pcl-1.11.0-pdb-msvc2019-…

Vue3 列表自动滚动播放(表头固定、列表内容自动滚动播放)+ vue3-seamless-scroll - 附完整示例

vue3-seamless-scroll&#xff1a;Vue3.0 无缝滚动组件&#xff0c;支持Vite2.0&#xff0c;支持服务端打包 目前组件支持上下左右无缝滚动&#xff0c;单步滚动&#xff0c;并且支持复杂图标的无缝滚动&#xff0c;目前组件支持平台与Vue3.0支持平台一致。 目录 效果 一、介绍…

腾讯云AI代码助手评测:如何智能高效完成Go语言Web项目开发

腾讯云AI代码助手评测&#xff1a;如何智能高效完成Go语言Web项目开发 &#x1f680; 文章目录 腾讯云AI代码助手评测&#xff1a;如何智能高效完成Go语言Web项目开发 &#x1f680;背景引言开发环境介绍腾讯云AI代码助手使用实例1. 代码补全2. 技术对话3. 代码优化4. 规范代码…

(计算机网络)物理层

目录 一.基本概念 二.基本术语 三.码元 四.多路复用技术 一.基本概念 1. 2. 3. 4. 5. 6. 7. 8. 9. 二.基本术语 1. 2. 3.早期--公用的电话网传输数据&#xff0c;网络上传的是模拟信号&#xff0c;调制解调器--将数字信号转化成模拟信号&#xff0c;最后&#xff0c;调制解…

NSSCTF-GDOUCTF 2023新生赛

[GDOUCTF 2023]hate eat snake 考察&#xff1a;js代码审计 打开题目&#xff0c;发现需要坚持60秒&#xff0c;那么简单的一个思路就是修改得分的变量>60即可 办法1&#xff1a;修改变量 右键查看源代码&#xff0c;之后发现有一个snake.js的文件&#xff0c;ctrlf搜索i…

程序设计基础(c语言)_补充_1

1、编程应用双层循环输出九九乘法表 #include <stdio.h> #include <stdlib.h> int main() {int i,j;for(i1;i<9;i){for(j1;j<i;j)if(ji)printf("%d*%d%d",j,i,j*i);elseprintf("%d*%d%-2d ",j,i,j*i);printf("\n");}return 0…

DS18B20数字温度传感器操作解析

文章目录 引言特点工作原理引脚说明配置寄存器温度寄存器时序初始化时序写时序读时序 引言 DS18B20 是一种广泛使用的数字温度传感器&#xff0c;具有高精度和易用性。是Dallas Semiconductor公司&#xff08;现为Maxim Integrated公司&#xff09;生产的单总线数字温度传感器…

关爱提示器-不要久坐

关爱提示器-不要久坐 最近身体不适腰疼脖子疼的&#xff0c;去医院检查&#xff0c;大夫提示注意身体不要久坐多运动等等之类的&#xff0c;哎&#xff0c;生活所迫&#xff0c;披星戴月兢兢业业的&#xff0c;到头来还要被批判躺平不努力。哎&#xff0c;先关爱自己吧&#xf…

Java | Leetcode Java题解之第322题零钱兑换

题目&#xff1a; 题解&#xff1a; public class Solution {public int coinChange(int[] coins, int amount) {int max amount 1;int[] dp new int[amount 1];Arrays.fill(dp, max);dp[0] 0;for (int i 1; i < amount; i) {for (int j 0; j < coins.length; j)…

Dynamo修改共享参数绑定的分组——群问题整理005

Hello大家好!我是九哥~ 今天继续给大家分享一些短平快的小教程,是来自群里面的问题。 问题005:Dynamo修改共享参数绑定的分组 今天看到群里询问如何修改参数所在的分组,查了下API,项目参数是不行的,不过共享参数是允许ReInsert()的,那么就好办了。 然后在Document下…

JavaEE 第4节 线程安全问题

小贴士&#xff1a; 本节题目所述的主题其实非常的庞大&#xff0c;如果要细讲起来&#xff0c;一篇博客远远不够&#xff0c;本篇博客只会每个方面的内容做一个简要描述&#xff0c;详细的内容在后续同专栏博客中都会涉及到的&#xff0c;如果有需要可以一步到本专栏的其他博客…

python运行js之execjs基本使用

python运行js之execjs基本使用 现在大部分网站都使用JS加密和JS加载的情况&#xff0c;数据并不能直接被抓取出来&#xff0c;这时候就需要使用第三方类库来执行JS语句。 官网&#xff1a;https://pypi.org/project/PyExecJS/ 使用前提&#xff1a;电脑需要安装 Node.js 一、安…