LeetCode 1667, 36, 199

news2024/11/25 0:29:03

目录

  • 1667. 修复表中的名字
    • 题目链接
    • 要求
    • 知识点
    • 思路
    • 代码
  • 36. 有效的数独
    • 题目链接
    • 标签
    • 思路
    • 代码
  • 199. 二叉树的右视图
    • 题目链接
    • 标签
    • 思路
    • 代码

1667. 修复表中的名字

题目链接

1667. 修复表中的名字

  • Users的字段为user_idname

要求

编写解决方案,修复名字,使得只有第一个字符是大写的,其余都是小写的。

返回按 user_id 排序的结果表。

知识点

  1. substring():截取字符串,接收三个(或两个)参数:源字符串、起始字符索引(索引从1开始)和长度(可选),如果不写长度,则截取源字符串从 起始字符字符串末尾字符 的部分。例如select substring("abcde", 1, 2)的结果为abselect substring("abcde", 2)的结果为bcde
  2. upper():将字符串转化为大写的函数。例如select upper("aBc")的结果为ABC
  3. lower():将字符串转化为小写的函数。例如select upper("AbC")的结果为abc
  4. concat():拼接字符串的函数。例如select concat("us", "er")的结果为user
  5. order by:根据某些字段排序。

思路

想必大家看完知识点之后已经想出如何解决本题了:截取名字的第一个字符,转化为大写;截取名字从第二个字符到末尾字符到部分,转化为小写。然后再将这两部分拼接起来,最后根据user_id进行排序即可。

代码

select
    user_id,
    concat(upper(substring(name, 1, 1)), lower(substring(name, 2))) name
from
    Users
order by
    user_id

36. 有效的数独

题目链接

36. 有效的数独

标签

数组 哈希表 矩阵

思路

可以使用二维数组保存各行、各列、各3x3宫内数字1-9是否出现过,在遍历到某个数字时,先检查它所在行、列、3x3宫是否有这个数字,如果有,则返回false;如果没有,就标记它所在行、列、3x3宫有这个数字。如果能遍历完整个9x9宫,说明这个数独有效,返回true

二维数组如何保存数字1-9?对于行数组row来说,它每行表示九宫格的每行,它每列表示数字1-9;对于列数组col来说,它每行表示九宫格的每列,它每列表示数字1-9;对于3x3宫数组sub来说,它每行表示九宫格的编号从09,它每列表示数字1-9

行数组row和列数组col实现起来比较简单,但3x3宫数组sub的实现就不是这么简单了,需要计算每个3x3宫的编号,先给每个3x3宫编号,如下图所示:
九宫格

观察可得:

0行0列是第0个3x3宫,…,2行2列是第0个3x3
0行3列是第1个3x3宫,…,2行5列是第1个3x3
0行6列是第2个3x3宫,…,2行8列是第2个3x3
3行0列是第3个3x3宫,…,5行2列是第3个3x3
3行3列是第4个3x3宫,…,5行5列是第4个3x3
3行6列是第5个3x3宫,…,5行8列是第5个3x3
6行0列是第6个3x3宫,…,8行2列是第6个3x3
6行3列是第7个3x3宫,…,8行5列是第7个3x3
6行6列是第8个3x3宫,…,8行8列是第8个3x3

不难看出,每当列数增加3,编号增加1;每当行数增加3,编号增加3。所以可以得出一个结论:i行第j列的格子属于编号为i / 3 * 3 + j / 33x3

代码

class Solution {
    public boolean isValidSudoku(char[][] board) {
        boolean[][] row = new boolean[9][9];
        boolean[][] col = new boolean[9][9];
        boolean[][] sub = new boolean[9][9];
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                char ch = board[i][j];
                if (ch == '.') { // 当ch不是数字时
                    continue; // 跳过ch
                }
                int num = ch - '1';
                int subIndex = i / 3 * 3 + j / 3;
                // 判断这个数字是否重复
                if (row[i][num] || col[j][num] || sub[subIndex][num]) {
                    return false;
                }
                // 进行标记
                row[i][num] = true;
                col[j][num] = true;
                sub[subIndex][num] = true;
            }
        }
        return true;
    }
}

199. 二叉树的右视图

题目链接

199. 二叉树的右视图

标签

树 深度优先搜索 广度优先搜索 二叉树

思路

本题的思路很简单:层序遍历二叉树,将每层的最后一个节点的值加入结果链表即可。如果对层序遍历不熟悉,可以看这篇文章:102. 二叉树的层序遍历。

对层序遍历做个总结:使用队列存放每层节点,预先放入根节点,在遍历每层节点时将下一层的节点(即当前层节点的左、右子节点)加入队尾,直到队列为空。

代码

class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        if (root == null) { // 如果根节点为null
            return new ArrayList<>(); // 则返回空链表
        }

        List<Integer> res = new ArrayList<>(); // 结果链表
        LinkedList<TreeNode> queue = new LinkedList<>(); // 存放每层节点的队列
        queue.offer(root);
        while (!queue.isEmpty()) {
            int size = queue.size(); // 获取本层节点的数量
            for (int i = 0; i < size; i++) { // 遍历本层的所有节点
                TreeNode curr = queue.poll();
                if (i == size - 1) { // 如果是本层最后一个节点
                    res.add(curr.val); // 将本层节点的值放入结果链表
                }
                if (curr.left != null) {
                    queue.offer(curr.left);
                }
                if (curr.right != null) {
                    queue.offer(curr.right);
                }
            }
        }
        return res;
    }
}

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

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

相关文章

上位机图像处理和嵌入式模块部署(mcu 项目1:上位机编写)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面&#xff0c;我们说过要做一个报警器。如果只是简单做一个报警器呢&#xff0c;这个基本上没有什么难度。这里&#xff0c;我们就适当提高一下…

LLM意图识别器实践

利用 Ollama 和 LangChain 强化条件判断语句的智能提示分类 ❝ 本文译自Supercharging If-Statements With Prompt Classification Using Ollama and LangChain一文&#xff0c;以Lumos工具为例&#xff0c;讲解了博主在工程实践中&#xff0c;如何基于LangChain框架和本地LLM优…

Meta发布LLM编译器 称将改变我们的编程方式

Meta发布了Meta 大型语言模型&#xff08;LLM&#xff09;编译器&#xff0c;这是一套强大的开源模型&#xff0c;旨在优化代码并彻底改变编译器设计。这项创新有望改变开发人员优化代码的方式&#xff0c;使代码优化更快、更高效、更具成本效益。 在将大型语言模型应用于代码和…

Vue--》从零开始打造交互体验一流的电商平台(四)完结篇

今天开始使用 vue3 + ts 搭建一个电商项目平台,因为文章会将项目的每处代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关注本专栏,学习更多…

20240629在NanoPi R6C开发板的预编译的Android12下使用iperf3测试网速

20240629在NanoPi R6C开发板的预编译的Android12下使用iperf3测试网速 2024/6/29 11:11 【表扬一下】友善之臂没有提供update.img的预编译固件&#xff0c;我心里一凉&#xff0c;这么多IMG文件&#xff0c;得一个一个选择呀&#xff01; 但是别人友善之臂特别急人之所急&#…

Linux部署wordpress站点

先安装宝塔面板 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec 因为wordpress需要php&#xff0c;mysql&#xff0c;apache &#xff0c;httpd环境 参考&#xff1a;Linux 安装宝塔…

Docker基础知识的掌握,相关基本命令的用法

安装docker步骤&#xff1a;https://b11et3un53m.feishu.cn/wiki/Rfocw7ctXij2RBkShcucLZbrn2d 1.docker Docker 是一种容器化平台&#xff0c;用于帮助开发者打包、发布和管理应用程序及其依赖关系。通过 Docker&#xff0c;开发者可以将应用程序及其所有依赖项打包到一个称为…

java虚拟机栈帧操作

虚拟机栈(Virtual Machine Stack)是虚拟机(如JVM、Python VM等)用来管理方法调用和执行的栈结构。它主要用于存储方法调用的相关信息,包括局部变量、操作数栈、动态链接和方法返回地址等。 java虚拟机栈操作的基本元素就是栈帧,栈帧主要包含了局部变量表、操作数栈、动态…

10分钟完成微信JSAPI支付对接过程-JAVA后端接口

引入架包 <dependency><groupId>com.github.javen205</groupId><artifactId>IJPay-WxPay</artifactId><version>${ijapy.version}</version></dependency>配置类 package com.joolun.web.config;import org.springframework.b…

【算法专题--栈】栈的压入、弹出序列 -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 &#x1f4a7;栈模拟法&#x1f4a7;-- 双指针 ⭐ 解题思路 ⭐ 案例图解 四、总结与提炼 五、共勉 一、前言 栈的压入、弹出序列 这道题&#xff0c;可以说是--栈专题--&#xff0c;最经典的一道题&#xff0c;也是在…

贪心法思想-求最大子数组和案例图解

贪心法思想 ​ 基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#xff0c;以期获得全局最优解。 ​ 正如其名字一样&#xff0c;贪心法在解决问题的策略上目光短浅&#xff0c;只根据当前已有的信息做出选择…

【FFmpeg】avformat_write_header函数

FFmpeg相关记录&#xff1a; 示例工程&#xff1a; 【FFmpeg】调用ffmpeg库实现264软编 【FFmpeg】调用ffmpeg库实现264软解 【FFmpeg】调用ffmpeg库进行RTMP推流和拉流 【FFmpeg】调用ffmpeg库进行SDL2解码后渲染 流程分析&#xff1a; 【FFmpeg】编码链路上主要函数的简单分…

VMware中安装CentOS系统

VMware中安装CentOS系统 CentOS 镜像的准备创建虚拟机Cent OS系统的安装 CentOS 镜像的准备 下载链接&#xff1a;清华园CenOS 7镜像下载 VMware的安装参考&#xff1a;VMware workstation pro 16 虚拟机的安装 创建虚拟机 1.打开VMware workstation pro 16->创建新的虚拟…

[leetcode]insert-into-a-binary-search-tree

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:TreeNode* insertIntoBST(TreeNode* root, int val) {if (root nullptr) {return new TreeNode(val);}TreeNode* pos root;while (pos ! nullptr) {if (val < pos->val) {if (pos->left nullptr…

掌握Python编程的深层技能

一、Python基础语法、变量、列表、字典等运用 1.运行python程序的两种方式 1.交互式即时得到程序的运行结果 2.脚本方式把程序写到文件里(约定俗称文件名后缀为.py),然后用python解释器解释执行其中的内容2.python程序运行的三个步骤 python3.8 C:\a\b\c.py 1.先启动python3…

揭秘循环购模式:消费即赚钱,私域电商新纪元

消费1000送2000、每天领钱、钱还可以提现&#xff0c;这样的商业模式——循环购模式&#xff0c;确实在私域电商领域引起了广泛的关注。这种模式的成功并非偶然&#xff0c;而是基于合理的返利规则和商业模式创新。下面我将为您详细解析循环购模式为何能够吸引消费者&#xff0…

记录一次——RK100键盘按键失效修复

一、背景说明: 背景&#xff1a;购买的键盘是RK的型号RK100&#xff0c;具有紧凑的外观&#xff0c;并搭配了TTC金粉轴&#xff0c;使用起来还不错&#xff0c;目前已经是第3年了。问题&#xff1a;前几个月会出现H按键失效的问题&#xff0c;但是过一段时间又会修复。最近是Q…

深入解析链表:解锁数据结构核心奥秘

一. 链表的定义 链表是一种线性数据结构&#xff0c;由一系列节点组成。每个节点包含两个部分&#xff1a; 数据域&#xff08;Data&#xff09;&#xff1a;存储节点的数据。指针域&#xff08;Pointer&#xff09;&#xff1a;存储指向下一个节点的地址。 链表的第一个节点…

一招教你用python代码给朋友写一个爱心代码

有人问我马上要跟女朋友一周年了&#xff0c;能不能用代码给他写一个爱心代码呢&#xff1f;那算你问对人了&#xff0c;来上才艺 可以使用Python的turtle模块来绘制一个爱心形状。下面是一个简单的示例代码&#xff0c;我将详细解释每一步&#xff1a; import turtle # 创建一…

制定班规要注意哪些事项

对于如何管理班级&#xff0c;制定班规是一项至关重要的任务。关系到班级的日常秩序&#xff0c;影响着学生的集体荣誉感。制定班规并非易事&#xff0c;需要深思熟虑和周全考虑。 班规的制定应以学生为中心。深入了解学生的需求和期望&#xff0c;以及他们在学习和生活中可能遇…