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

news2024/10/3 8:20:27

 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.coloradmin.cn/o/1978886.html

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

相关文章

创建属于你自己的整合类型——结构体的使用

创建属于你自己的整合类型——结构体的使用 1.结构体简介1.1.结构体基础语法1.2.例题1——最厉害的学生(结构体排序)题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 2.typedef结构体重命名3.(选读)成员函数和构造函数3.1.成员函数3.2.构造函数3.3.例题2——评等级题…

基于STM32的温湿度监控系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码主循环代码应用场景 家居环境监控工业环境监控常见问题及解决方案 常见问题解决方案结论 1. 引言 在智能家居和工业自动化中&#xff0c;温湿度监控系统是一个非常重要的组成部分…

Linux 进程优先级、程序地址空间、进程控制

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a; Linux 目录 一、进程优先级 1、什么是进程优先级&#xff1f; 2、为什么要有优先级&#xff1f; 3、Linux的优先级特点、查看方式 4、命令行参数和环境变量 1.命令行参数 2.环境变量 获取环境变量的…

Unity强化工程 之 SpriteEditer Multiple

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正 1. SpriteEditer Multiple Automatic slicing - Unity 手册 这是用于裁剪图集的模式 应用之后精灵编辑器会看到Slice亮…

云计算第二阶段:----监控与服务安全SECURITY

本模块内容&#xff0c;主要讲述 服务器的安全防护与配置软件相关知识。分为网络防护软件介绍、配置与使用用&#xff0c;网络安全相关知识浅度解析。 涉及软件有prometheus ,graphna,zabbix。 网络安全方面涉及基于debian linux系统的kali版本liunx的介绍与简单使用。 SECUR…

c++----内存管理

okk&#xff0c;大家好。我们大家学习了鄙人的前面前面几篇博客&#xff0c;并且还稍微使用了一些c的基础知识。并且我们前面都说过&#xff0c;我们前面学习的知识都说过。我们前面的几篇博客都是我们以后使用c基础。但是我们大家都知道现在代码都关注什么时间啊&#xff0c;内…

强光照射对半导体材料在紫外线下稳定性的影响

引言 半导体材料在光电器件中的应用日益广泛&#xff0c;其稳定性直接影响到器件的性能和寿命。特别是对于那些需要在户外或强光环境下工作的半导体器件&#xff0c;紫外线的照射会对材料的稳定性带来严峻挑战。因此&#xff0c;对半导体材料在紫外线照射下的稳定性进行深入研究…

模型实战(25)之 基于LoFTR深度学习匹配算法实现图像拼接

模型实战(25)之 基于LoFTR深度学习匹配算法实现图像拼接 图像拼接在全景图、大图或者多目场景下经常会被使用,常用的方法有传统图像处理算法和深度学习直接获取对应点的算法传统图像处理算法过程繁琐,阈值少且整体算法结果对调参比较敏感,其主要通过形状、特征点等描述子对…

【解决error】安装torch 1.1.0

第一步 当云服务器上没有指定版本的torch可以选择 先确定指定torch符合的python版本号 例如这里&#xff0c;我需要安装torch1.1.0&#xff0c;所以需要python>3.6 且 python<3.7 根据python版本&#xff0c;确定服务器安装torch的版本配置 第二步 新建conda虚拟环境…

搞DDR必懂的关键技术笔记:Initialization, Training , Calibration

初始化、训练和校准 引言 当一个带有DRAM子系统的设备上电时,DRAM达到可操作状态之前会发生一系列事件。以下是根据JEDEC规范中的状态机所显示的DRAM从上电到可操作状态所经历的各种状态。 这可不是我们平时就一句Training阶段就能概述。 本质上,初始化过程包括四个不同的阶…

【Redis】全局命令/内部编码/浅谈单线程模型

目录 前言 两个核心命令 GET和SET 全局命令 KEYS EXISTS DEL EXPIRE TTL TYPE 数据结构的内部编码 Redis的5中数据类型 Redis数据结构和内部编码 单线程架构 前言 Redis 提供了 5 种数据结构&#xff0c;理解每种数据结构的特点对于 Redis 开发运维⾮常重要&a…

easyrecovery和diskgenius哪个好 easyrecovery好用吗 diskgenius值得买吗

随着数据存储重要性的不断增加&#xff0c;数据丢失问题变得让人越来越担忧。当文件因为操作不慎、存储文件的介质损坏或其他原因导致数据丢失时&#xff0c;人们迫切需要一种强大的数据恢复工具来帮助他们找回丢失的文件。在这篇文章中&#xff0c;我们将比较两款知名的数据恢…

[Bugku] web-CTF靶场系列系列详解④!!!

平台为“山东安信安全技术有限公司”自研CTF/AWD一体化平台&#xff0c;部分赛题采用动态FLAG形式&#xff0c;避免直接抄袭答案。 平台有题库、赛事预告、工具库、Writeup库等模块。 --------------------------------- eval 开启环境&#xff1a; 进入页面发现是一道php题&…

axios请求响应拦截器

目录 axios-拦截器 拦截器的作用 请求拦截器-基本写法: axios请求拦截器-统一设置token 需求: 核心步骤: 关键代码: 响应拦截器-基本写法: axios响应拦截器-统一处理token失效 需求: 核心步骤: 关键代码: axios响应拦截器-数据剥离 需求: 核心步骤: 关键代码: ax…

试用AWS全新神器:Amazon Bedrock的「Open Artifacts」版Claude.ai Artifacts

Claude.ai的Artifacts真是太方便了。 GitHub上的AWS Samples仓库中有一个仿制Artifacts的应用程序。 Open Artifacts for Amazon Bedrock https://github.com/aws-samples/open_artifacts_for_bedrockhttps://github.com/aws-samples/open_artifacts_for_bedrock本文将介绍「…

【Java算法专场】前缀和(下)

目录 和为 K 的子数组 算法分析 算法步骤 算法代码 算法示例 和可被 K 整除的子数组 算法分析 同余定理 负数取余 算法步骤 算法代码 算法示例 连续数组 算法分析 算法步骤 算法代码 算法示例 矩阵区域和 算法分析 算法步骤 算法代码 算法示例 算法分析 …

1008 Elevator(Java)

题目 解释 输入数字N&#xff0c;数字N后面跟着N个数字代表着目的楼层&#xff0c;起始点是0层&#xff0c;每上升一层花费6秒&#xff0c;每下降一层花费4秒&#xff0c;每达到一个目的楼层&#xff0c;电梯会停5秒。问你一共花费多少秒&#xff1f; 解题思路 这道题不难&a…

【论文笔记】Matching Anything by Segmenting Anything

【引用格式】&#xff1a;Li S, Ke L, Danelljan M, et al. Matching Anything by Segmenting Anything[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2024: 18963-18973. 【网址】&#xff1a;https://openaccess.thecvf.com/co…

【Python】把list转换成json文件(list中为字典,元素按行写入)

0.前言 数据需要处理成与大模型输入相同类型的数据&#xff0c;从csv文件读出后&#xff0c;想要转换成json文件&#xff0c;看了好多资料都是把整个list写入了json&#xff0c;并不是我想要的格式&#xff0c;这里记录一下最后的按行写入的格式。 1.list转json import json …

Camtasia怎么自动加字幕 Camtasia怎么设置字幕

为了防止观众听不清楚视频中的解说声音&#xff0c;在进行视频编辑时&#xff0c;往往需要添加字幕。但是&#xff0c;你是否觉得一个一个添加字幕有些麻烦&#xff1f;使用Camtasia时&#xff0c;有没有什么能够快速、方便添加字幕的方法呢&#xff1f;添加字幕后&#xff0c;…