每日5题Day3 - LeetCode 11 - 15

news2024/9/21 14:38:59

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前!

第一题:11. 盛最多水的容器 - 力扣(LeetCode)

class Solution {
    public int maxArea(int[] height) {
        //这道题比较特殊,因为两边是任意选的,
        //所以中间可以出现比两边高的情况,实际就是双指针求一个矩形的面积
        //宽度为左右边界的差值,高度为左右高度的较小值,所以我们进行模拟
        int l = 0, r = height.length - 1, maxres = 0;
        while(l < r){
            if(maxres < (r - l) * Math.min(height[l], height[r])){
                maxres = (r - l) * Math.min(height[l], height[r]);
            }
            //不断挪动边界,因为宽度是在不断缩小的,那么如果我们挪动较高的那边,
            //得到的结果一定比以前小,所以挪动较低的那一边
            if(height[l] <= height[r]){
                l++;
            }else{
                r--;
            }
        }
        return maxres;
    }
}

第二题:12. 整数转罗马数字 - 力扣(LeetCode)

class Solution {
    // 数值对应的罗马数字
    int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
    // 罗马数字
    String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};

    // 将整数转换为罗马数字
    public String intToRoman(int num) {
        StringBuilder sb = new StringBuilder();
        // 遍历数值对应的数组
        for (int i = 0; i < values.length; ++i) {
            int value = values[i];
            String symbol = symbols[i];
            // 当 num 大于等于当前数值时,循环减去该数值,并将对应的罗马数字追加到结果中
            while (num >= value) {
                num -= value;
                sb.append(symbol);
            }
            // 如果 num 等于 0,表示已经转换完成,直接跳出循环
            if (num == 0) {
                break;
            }
        }
        // 返回转换后的罗马数字字符串
        return sb.toString();
    }
}

第三题:13. 罗马数字转整数 - 力扣(LeetCode)

class Solution {
    // 将罗马数字转换为整数
    public int romanToInt(String s) {
        int res = 0; // 结果变量,用于存储转换后的整数值
        int preNum = getValue(s.charAt(0)); // 前一个罗马数字对应的整数值
        // 遍历字符串 s 中的每个字符
        for(int i = 1; i < s.length(); i++){
            int num = getValue(s.charAt(i)); // 当前字符对应的整数值
            // 如果前一个字符对应的整数值小于当前字符对应的整数值,则将结果减去前一个字符对应的整数值
            if(preNum < num){
                res -= preNum;
            }else{ // 否则,将结果加上前一个字符对应的整数值
                res += preNum;
            }
            preNum = num; // 更新前一个字符对应的整数值为当前字符对应的整数值
        }
        res += preNum; // 加上最后一个字符对应的整数值
        return res; // 返回最终的整数值
    }

    // 获取字符对应的整数值
    private int getValue(char ch){
        switch(ch) {
            case 'I' : return 1;
            case 'V' : return 5;
            case 'X': return 10;
            case 'L': return 50;
            case 'C': return 100;
            case 'D': return 500;
            case 'M': return 1000;
            default: return 0;
        }
    }
}

第四题:14. 最长公共前缀 - 力扣(LeetCode)

import java.util.Arrays;
import java.util.Comparator;

class Solution {
    // 寻找字符串数组中的最长公共前缀
    public String longestCommonPrefix(String[] strs) {
        // 根据字符串长度对数组进行排序
        Arrays.sort(strs, new Comparator<String>(){
            @Override
            public int compare(String o1, String o2){
                return o1.length() - o2.length();
            }
        });
        
        // 获取最短字符串的长度
        int maxlen = strs[0].length();
        int res = 0, index = 0; // res: 公共前缀长度,index: 当前比较的字符索引
        // 遍历最短字符串的长度
        while(index < maxlen){
            char tmpch = '.'; // 临时变量,用于存储当前比较的字符,默认为'.'表示未初始化
            // 遍历字符串数组中的每个字符串
            for(String st : strs){
                // 如果临时字符是'.',则将当前字符作为临时字符
                if(tmpch == '.'){
                    tmpch = st.charAt(index);
                }
                // 否则,如果当前字符与临时字符不相等,则返回公共前缀(如果 res 不为 0),否则返回空字符串
                else{
                    if(st.charAt(index) != tmpch){
                        return res != 0 ? strs[0].substring(0, res) : "";
                    }
                }
            }
            index++; // 移动到下一个字符位置
            res++; // 更新公共前缀长度
        }
        // 返回最长公共前缀
        return strs[0].substring(0, res);
    }
}

 第五题:15. 三数之和 - 力扣(LeetCode)

class Solution {
    // 定义一个方法threeSum,接收一个整数数组nums作为参数,返回所有和为0的三元组
    public List<List<Integer>> threeSum(int[] nums) {
        // 初始化结果列表
        List<List<Integer>> res = new ArrayList<>();
        // 对数组进行排序,以便于后续的双指针操作
        Arrays.sort(nums);
        // 遍历数组,使用i作为第一个数字
        for(int i = 0; i < nums.length - 2; i++) {
            // 跳过相同的元素,避免重复的三元组
            if(i > 0 && nums[i] == nums[i - 1]) {
                continue;
            }
            // 初始化左右指针
            int j = i + 1, k = nums.length - 1;
            // 使用while循环进行双指针操作,寻找和为0的三元组
            while(j < k) {
                // 计算当前三元组的和
                int cursum = nums[i] + nums[j] + nums[k];
                // 如果当前和小于0,说明需要增大和,因此移动左指针j
                if(cursum < 0) {
                    j++;
                } else if(cursum > 0) {
                    // 如果当前和大于0,说明需要减小和,因此移动右指针k
                    k--;
                } else {
                    // 如果当前和为0,找到了一个三元组
                    res.add(Arrays.asList(nums[i], nums[j], nums[k]));
                    // 跳过相同的元素,避免重复的三元组
                    while(j < k && nums[j] == nums[j + 1]) {
                        j++;
                    }
                    while(j < k && nums[k] == nums[k - 1]) {
                        k--;
                    }
                    // 移动指针继续寻找下一个可能的三元组
                    j++;
                    k--;
                }
            }
        }
        // 返回所有找到的三元组
        return res;
    }
}

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

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

相关文章

OPC-UA open62541 C++测试代码

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 这是之前写的open62541测试代码…

电脑版的学浪课程下载方法

想在你的电脑上无限制地访问你最爱的学浪课程吗&#xff1f;现在&#xff0c;让我揭秘如何用几个简单步骤&#xff0c;轻松下载任何学浪课程到你的电脑&#xff0c;让学习不再受时间和地点的限制&#xff0c;随时随地都是你的课堂。 下载学浪视频的工具&#xff0c;我已经打包…

计算机网络实验3:路由器安全防控配置

实验目的和要求 理解标准IP访问控制列表的原理及功能理解CHAP、DHCP配置原理了解家用式无线路由配置方法实验项目内容 标准IP访问控制列表配置 CHAP验证路由器上配置DHCP网络地址转换NAT配置无线路由实现实验环境 1. 硬件&#xff1a;PC机&#xff1b; 2. 软件&#xff1a;W…

SQL复习

SQL基础 包括&#xff1a; 数据查询&#xff1a;SELECT数据定义语言&#xff1a;CREATE、ALTER和DROP数据操纵语言&#xff1a;INSERT、UPDATE、DELETE数据控制语言&#xff1a;GRANT、REVOKE 特点&#xff1a; 综合统一高度非过程化面向集合既是独立的也是嵌入式语言 三…

垃圾分类管理系统java项目

文章目录 垃圾分类管理系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目&#xff08;9.9&#xffe5;带走&#xff09; 垃圾分类管理系统 一、项目演示 垃圾分类管理系统 二、项目介绍 系统角色&#xff1a;管理员、用户 1、登录、注册功能…

【Arduino】Free RTOS系统

目录 1、任务创建 2、任务删除 3、延迟函数 4、示例&#xff1a; ESP32的SDK包中内置了FreeRTOS&#xff0c;在FreeRTOS中&#xff0c;线程&#xff08;Thread&#xff09;和任务&#xff08;Task&#xff09;的概念是相同的。每个任务就是一个线程&#xff0c;有着自己的一…

Go框架三件套:Gorm的基本操作

1.概述 这里的Go框架三件套是指 Web、RPC、ORM框架&#xff0c;具体如下: Gorm框架 gorm框架是一个已经迭代了10年的功能强大的ORM框架&#xff0c;在字节内部被广泛使用并且拥有非常丰富的开源扩展。 Kitex框架 Kitex是字节内部的Golang微服务RPC框架&#xff0c;具有高性能…

IDEA不能创建新项目和新模块

问题&#xff1a; IDEA不管是创建新项目还是新模块都创建不成功&#xff0c;会报如下图错误 解决方案&#xff1a; 在电脑设置里搜索 “防火墙和网络保护” &#xff0c;打开如下图所示 找到你所安装的IDEA&#xff0c;更改设置&#xff0c;选中IDEA 最后&#xff0c;确定&am…

行为驱动开源免费接口测试框架:karate

什么是行为驱动测试&#xff1a; 行为驱动测试&#xff08;Behavior-Driven Testing&#xff0c;简称 BDT&#xff09;是一种测试方法&#xff0c;旨在通过描述系统行为和功能来编写测试用例。BDT的重点是从用户的角度出发&#xff0c;描述系统应该如何行为&#xff0c;而不是专…

机器学习笔记 KAN网络架构简述(Kolmogorov-Arnold Networks)

一、简述 在最近的研究中,出现了号称传统多层感知器 (MLP) 的突破性替代方案,重塑了人工神经网络 (ANN) 的格局。这种创新架构被称为柯尔莫哥洛夫-阿诺德网络 (KAN),它提出了一种受柯尔莫哥洛夫-阿诺德表示定理启发的函数逼近的方法。 与 MLP 不同,MLP 依赖于各个节…

嗨动PDF编辑器怎么对pdf修改?分享修改步骤

嗨动PDF编辑器怎么对pdf修改&#xff1f;PDF&#xff08;Portable Document Format&#xff09;格式因其跨平台、不易修改的特性&#xff0c;在日常工作和学习中得到了广泛的应用。然而&#xff0c;当需要对PDF文件进行修改时&#xff0c;许多人可能会感到困扰。此时&#xff0…

付费解锁隐藏动力和续航,订阅制又被特斯拉玩出花了

我们知道&#xff0c;「订阅制」早已成互联网领域各路大厂玩烂的操作。 上到程序订阅付费使用&#xff08;例如 Offics、Adobe&#xff09;&#xff0c;下到各类功能服务订阅&#xff08;如影视会员、网盘会员等&#xff09;。 甚至于某东、某宝等网购平台也整出了 VIP 订阅服…

2024五月母亲节嘉年华活动方案

2024以花之名 致谢母亲簪花趣味亲子五月母亲节嘉年华活动方案-43P 活动策划信息&#xff1a; 方案页码&#xff1a;43页 文件格式&#xff1a;PPT 方案简介&#xff1a; 岁月温柔治愈 母爱闪闪发光 一年一度的PY圈孝子孝女大赛即将到来 本次母亲节&#xff0c;“以花之名…

三分钟快速上手SpringSecurity框架

导入依赖框架 web 框架(spring-boot-starter-web) <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> springSecurity 框架(spring-boot-starter-security) <de…

MySQL基础使用指南

难度就是价值所在。大家好&#xff0c;今天给大家分享一下关于MySQL的基础使用&#xff0c;MySQL 是一个流行的关系型数据库管理系统&#xff0c;被广泛应用于各种类型的应用程序开发中。本文中将介绍 MySQL 的基础使用方法&#xff0c;包括创建数据库、创建表格以及进行增删改…

景源畅信数字:做抖音切片的方法分享?

一提起抖音切片&#xff0c;很多人可能会想到那些让人眼前一亮的短视频。它们通常短小精悍&#xff0c;内容丰富多彩&#xff0c;能够迅速吸引观众的注意力。但是&#xff0c;如何制作出这样的切片视频呢?这就是我们今天要探讨的问题。 一、选材与剪辑 制作抖音切片&#xff0…

判断上三角矩阵 分数 15

题目展示&#xff1a; 代码展示&#xff1a; 点这里&#xff0c;输入题目名称即可检索更多题目答案 ​#include<stdio.h>int main() {//T-tint t 0;scanf("%d",&t);while(t--)//循环t次&#xff0c;处理t个矩阵{int n 0;scanf("%d",&n);…

自学VBA 设置单元格文字格式 笔记

一.设定对应单元格对应需要显示的格式 Cells(1, 1).Font.Size 18 字体大小 Cells(1, 2).Font.Color RGB(255, 0, 0) 字体颜色 Cells(1, 3).Font.Name "黑体" 字体类型 Cells(1, 4).Font.Italic True 字体斜体 Cells(1, 5).Font.FontStyle "BOLD"…

创新指南 | 企业AI战略 实施方案探讨(上):如何构建基于AI的新商业模型和业务场景

2023年以ChatGPT为代表的生成式AI推出以来&#xff0c;从投资界到企业界都掀起了一股热潮。那么从企业角度来看&#xff0c;生成式AI到底能为业务带来哪些增量呢&#xff1f;企业如何构建基于AI的商业模式并进行落地实施呢&#xff1f; 企业AI战略 实施方案探讨分为上下两篇&am…

开发常用的实体属性转化API,copyProperties方法的用途,需要注意的点。

目录 1. 摘要 2. 传统 set 方法转化属性 3. cn.hutool.core.bean.BeanUtil 包下 copyProperties 方法 3.1 转化对象属性多于原始对象属性 3.2 转化对象属性少于原始对象属性 3.3 转化对象属性与原始对象属性存在差 4. org.springframework.beans.BeanUtils 包下 copyPro…