力扣每日一练——Java

目录

一、字形变换

二、删除有序数组中的重复项

三、移除元素

四、找出字符串中第一个匹配项的下标


一、字形变换

将一个给定字符串s根据给定的行数numRows,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为"PAYPALISHIRING"行数为3时,排列如下:

P A H N A P L S I I G Y I R

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"

请你实现这个将字符串进行指定行数变换的函数:

string convert(string s, int numRows);

示例 1:

输入:s = "PAYPALISHIRING", numRows = 3输出:"PAHNAPLSIIGYIR"
示例 2:
输入:s = "PAYPALISHIRING", numRows = 4输出:"PINALSIGYAHRPI"解释:P I N A L S I G Y A H R P I

示例 3:

输入:s = "A", numRows = 1输出:"A"
public class Test { public static void main(String[] args) { String str = "PAHNAPLSIIGYIR"; int num = 3; System.out.println(convert(str, num)); } public static String convert(String s, int numRows) { int n = s.length(), r = numRows; if (r == 1 || r >= n) { return s; } int t = r * 2 - 2; int c = (n + t - 1) / t * (r - 1); char[][] mat = new char[r][c]; for (int i = 0, x = 0, y = 0; i < n; ++i) { mat[x][y] = s.charAt(i); if (i % t < r - 1) { ++x; } else { --x; ++y; } } StringBuffer ans = new StringBuffer(); for (char[] row : mat) { for (char ch : row) { if (ch != 0) { ans.append(ch); } } } return ans.toString(); } }

二、删除有序数组中的重复项

给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。

考虑nums的唯一元素的数量为k。去重后,返回唯一元素的数量k

nums的前k个元素应包含排序后的唯一数字。下标k - 1之后的剩余元素可以忽略。

判题标准:

系统会用下面的代码来测试你的题解:

int[] nums = [...]; // 输入数组 int[] expectedNums = [...]; // 长度正确的期望答案 int k = removeDuplicates(nums); // 调用 assert k == expectedNums.length; for (int i = 0; i < k; i++) { assert nums[i] == expectedNums[i]; }

如果所有断言都通过,那么您的题解将被通过

示例 1:

输入:nums = [1,1,2]输出:2, nums = [1,2,_]解释:函数应该返回新的长度2,并且原数组nums的前两个元素被修改为1,2不需要考虑数组中超出新长度后面的元素。

示例 2:

输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4,_,_,_,_,_]解释:函数应该返回新的长度5, 并且原数组nums的前五个元素被修改为0,1,2,3,4。不需要考虑数组中超出新长度后面的元素。
public class Test { //力扣题删除重复元素 public static void main(String[] args) { int[] num = {0, 0, 1, 1, 1, 2, 2, 3, 3, 4}; System.out.println(removeDuplicates(num)); } public static int removeDuplicates(int[] nums) { int n = nums.length; if(n == 0) { return 0; } int fast = 1, slow = 1; while(fast < n) { if(nums[fast] != nums[fast - 1]) { nums[slow] = nums[fast - 1]; ++slow; } ++fast; } return slow; } }

三、移除元素

给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素。元素的顺序可能发生改变。然后返回nums中与val不同的元素的数量。

假设nums中不等于val的元素数量为k,要通过此题,您需要执行以下操作:

  • 更改nums数组,使nums的前k个元素包含不等于val的元素。nums的其余元素和nums的大小并不重要。
  • 返回k
  • 示例 1:

    输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2,_,_]解释:你的函数应该返回 k = 2, 并且 nums中的前两个元素均为 2。 你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。

    示例 2:

    输入:nums = [0,1,2,2,3,0,4,2], val = 2输出:5, nums = [0,1,4,0,3,_,_,_]解释:你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。 注意这五个元素可以任意顺序返回。 你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。
public class Test { //删除与val值相等的值 public static void main(String[] args) { int[] arr = {3, 2, 2, 3}; int val1 = 3; System.out.println(removeElement(arr, val1)); } public static int removeElement(int[] nums, int val) { int n = nums.length; int a = 0; for (int i = 0; i < n; i++) { if(nums[i] != val) { nums[a] = nums[i]; a ++; } } return a; } }

四、找出字符串中第一个匹配项的下标

给你两个字符串haystackneedle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从 0 开始)。如果needle不是haystack的一部分,则返回-1

示例 1:

输入:haystack = "sadbutsad", needle = "sad"输出:0解释:"sad" 在下标 0 和 6 处匹配。 第一个匹配项的下标是 0 ,所以返回 0 。

示例 2:

输入:haystack = "leetcode", needle = "leeto"输出:-1解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1 。
public class Test { //两个数组相同的第一个下标 public static void main(String[] args) { String str1 = "sadbutsad"; String str2 = "sad"; System.out.println(strStr(str1, str2)); } public static int strStr(String haystack, String needle) { int n = haystack.length(), m = needle.length(); for (int i = 0; i + m <= n; i++) { boolean flag = true; for (int j = 0; j < m; j++) { if (haystack.charAt(i + j) != needle.charAt(j)) { flag = false; break; } } if (flag) { return i; } } return -1; } }

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

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

相关文章

NEAR协议:从AI研究到Web3基础层的进化之路

在区块链技术快速演进的今天&#xff0c;NEAR协议以其独特的分片架构和用户友好的设计理念&#xff0c;正成为构建下一代互联网应用的重要基础设施。本文将深入探讨NEAR的历史渊源、技术架构、核心价值与未来发展方向。一、历史起源&#xff1a;从AI研究到区块链实践NEAR协议的…

Go 连接mysql添加时区

import (_ "github.com/gogf/gf/contrib/drivers/mysql/v2" )mysql:root:123456tcp(127.0.0.1:3306)/star?charsetutf8mb4&parseTimeTrue&locAsia%2FShanghai

BNB链:从交易所代币到Web3基础设施的进化之路

在区块链世界竞争日益激烈的今天&#xff0c;BNB链以其独特的发展路径和技术架构&#xff0c;已成为连接传统金融与去中心化世界的重要桥梁。本文将深入解析BNB链的历史演进、技术架构、生态价值与未来展望。一、历史演进&#xff1a;从交易所代币到公链巨头BNB的发展历程堪称区…

深度学习毕设项目:基于python-深度学习CNN-pytorch训练识别蝴蝶-蚂蚱等昆虫

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Cosmos:构建区块链互联网的宏伟蓝图与实践之路

在区块链技术蓬勃发展的今天&#xff0c;我们目睹了数以千计的区块链网络诞生&#xff0c;但它们大多如同孤岛&#xff0c;难以相互通信和协作。Cosmos&#xff08;宇宙&#xff09;应运而生&#xff0c;它并非一条单一的区块链&#xff0c;而是一个旨在连接这些孤岛、构建“区…

深度解析var、let、const的区别与最佳使用场景

深度解析var、let、const的区别与最佳使用场景在JavaScript的变量声明体系中&#xff0c;var、let、const是三种核心方式。ES6&#xff08;ECMAScript 2015&#xff09;引入let和const后&#xff0c;彻底改变了JS的变量作用域机制&#xff0c;解决了var长期存在的设计缺陷。很多…

Polygon链:从以太坊侧链到Web3基础设施的演进之路

在区块链技术快速发展的今天&#xff0c;Polygon&#xff08;原名Matic Network&#xff09;已从解决以太坊拥堵问题的侧链&#xff0c;演进为旨在构建"互联网价值层"的多链网络。它不仅提供了高扩展性的底层设施&#xff0c;还通过创新的ZK技术和代币经济模型&#…

Selenium+Python可通过 元素定位→操作模拟→断言验证 三步实现Web自动化测试

一、环境搭建&#xff08;5分钟完成&#xff09;1. 安装依赖bash# 安装Selenium库 pip install selenium 下载浏览器驱动&#xff08;需与浏览器版本匹配&#xff09;&#xff1a;Chrome驱动&#xff1a;https://sites.google.com/chromium.org/driver/下载后放入Python安装…

深度学习计算机毕设之基于卷神经网络python-CNN深度学习识别猫脸

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

MBA必备!10个降AI率工具高效推荐

MBA必备&#xff01;10个降AI率工具高效推荐 AI降重工具&#xff1a;MBA论文的高效护航者 在当前学术研究日益依赖人工智能技术的背景下&#xff0c;MBA学生在撰写论文时常常面临一个共同难题——如何有效降低AIGC率、去除AI痕迹&#xff0c;同时又不破坏文章的逻辑性和专业性。…

深度学习计算机毕设之基于python-CNN卷积神经网络人工智能的柑橘成熟度识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

别再让 Cursor 只当编辑器了!4 步解锁 Claude 官方技能!

别再让 Cursor 只当编辑器了&#xff01;4 步解锁 Claude 官方技能&#xff01;

《source insight》添加对.s文件的支持

今天发现source insight 3.5中默认忽略.s文件&#xff0c;这里添加对.s文件的支持。

深度实践!提示工程架构师与Agentic AI环境监测深度

深度实践&#xff01;提示工程架构师与Agentic AI环境监测深度 一、引言&#xff1a;环境监测的“痛点”与Agentic AI的“解药” 1.1 环境监测的现状困境 清晨打开手机&#xff0c;你看到“空气质量良”的提示&#xff0c;但楼下的雾霾却让你咳嗽不止——这不是科幻电影&#x…

【毕业设计】基于python-深度学习CNN-pytorch训练识别蝴蝶-蚂蚱等昆虫

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【毕业设计】基于python-CNN深度学习识别猫脸

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

3D建模中的提示工程实战:生成影视道具完整案例

3D建模中的提示工程实战&#xff1a;生成影视道具完整案例 一、引言&#xff1a;影视道具设计师的“效率瓶颈”与AI的救赎 1. 钩子&#xff1a;你是否经历过“道具设计的死循环”&#xff1f; 作为一名影视道具设计师&#xff0c;我曾无数次陷入这样的困境&#xff1a; 导演说“…

【课程设计/毕业设计】基于深度学习python-CNN卷积神经网络的柑橘成熟度识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【毕业设计】基于python-CNN卷积神经网络的柑橘成熟度识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

基于Python+Django网络爬虫的房屋信息采集系统的设计与实现 #计算机毕业设计 毕设 论文 开题报告

博主介绍 本人程序员一枚&#xff0c;从2017年从事开发行业到现在&#xff0c;我们可以从最初的java,ssm,jsp&#xff0c;发展到现在的spring boot vue框架&#xff0c;随着python的崛起&#xff0c;又融入了django、flask框架的web式开发&#xff0c;一步一步走到现在&#x…