Java每日一练(20230510) 生成器类、螺旋矩阵II、删除链表的重复元素II

news/2024/11/24 13:52:28/

目录

1. 定义一个类Generator  🌟🌟

2. 螺旋矩阵 II  🌟🌟

3. 删除排序链表中的重复元素 II  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 定义一个类Generator

定义一个类 Generator(生成器类),它可以在每次调用其 next()方法时,产生由你 最喜欢的电影(如 Snow White 或 Star Wars)的字符构成的名字(作为 String 对象)。在字 符列表中的电影名用完之后,循环到这个字符列表的开始处。使用这个生成器来填充数组、 ArrayList、LinkedList、HashSet,然后打印每一个容器。

出处:

https://edu.csdn.net/practice/27452672

代码:

import java.util.*;
public class MovieGenerator {private String[] movies = new String[] { "SS", "DD", "HH", "FF", "XX", "ZZ" };private int i = 0;public String next() {return movies[i++ % movies.length];}public String[] getMovies() {return movies;}public Collection<String> fill(Collection<String> collection) {for (int i = 0; i < 8; i++) {collection.add(next());}return collection;}public static void main(String[] args) {MovieGenerator generator = new MovieGenerator();System.out.println(Arrays.toString(generator.getMovies()));System.out.println(generator.fill(new ArrayList<String>()));System.out.println(generator.fill(new LinkedList<String>()));System.out.println(generator.fill(new HashSet<String>()));}
}

输出:


2. 螺旋矩阵 II

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

出处:

https://edu.csdn.net/practice/27452673

代码:

import java.util.*;
public class GenerateMatrix {public int[][] generateMatrix(int n) {int[][] res = new int[n][n];if (n == 0) {return res;}int left = 0;int right = n - 1;int up = 0;int down = n - 1;int i = 1;while (i <= n * n) {for (int col = left; col <= right; col++) {res[up][col] = i;i++;}up++;if (i <= n * n) {for (int j = up; j <= down; j++) {res[j][right] = i;i++;}right--;}if (i <= n * n) {for (int j = right; j >= left; j--) {res[down][j] = i;i++;}down--;}if (i <= n * n) {for (int j = down; j >= up; j--) {res[j][left] = i;i++;}left++;}}return res;}public static void main(String[] args) {GenerateMatrix a = new GenerateMatrix();System.out.println(Arrays.deepToString(a.generateMatrix(3)));}
}

输出:

[[1, 2, 3], [8, 9, 4], [7, 6, 5]]


3. 删除排序链表中的重复元素 II

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。

返回同样按升序排列的结果链表。

示例 1:

输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]

示例 2:

输入:head = [1,1,1,2,3]
输出:[2,3]

提示:

  • 链表中节点数目在范围 [0, 300] 内
  • -100 <= Node.val <= 100
  • 题目数据保证链表已经按升序排列

出处:

https://edu.csdn.net/practice/27452674

代码:

import java.util.*;
public class deleteDuplicates {public static class ListNode {int val;ListNode next;ListNode(int x) { val = x; }}public static class Solution {public ListNode deleteDuplicates(ListNode head) {if (head == null || head.next == null) {return head;}ListNode next = head.next;if (head.val == next.val) {while (next != null && head.val == next.val) {next = next.next;}head = deleteDuplicates(next);} else {head.next = deleteDuplicates(next);}return head;}}public static ListNode createLinkedList(int[] nums) {if (nums == null || nums.length == 0) {return null;}ListNode head = new ListNode(nums[0]);ListNode cur = head;for (int i = 1; i < nums.length; i++) {cur.next = new ListNode(nums[i]);cur = cur.next;}return head;}public static void printLinkedList(ListNode head) {ListNode cur = head;while (cur != null) {System.out.print(cur.val + "->");cur = cur.next;}System.out.println("null");}public static void main(String[] args) {Solution s = new Solution();int[] nums = {1,2,3,3,4,4,5};ListNode head = createLinkedList(nums);printLinkedList(head);head = s.deleteDuplicates(head);printLinkedList(head);int[] nums2 = {1,1,1,2,3};head = createLinkedList(nums2);printLinkedList(head);head = s.deleteDuplicates(head);printLinkedList(head);}
}

输出:

1->2->3->3->4->4->5->null
1->2->5->null
1->1->1->2->3->null
2->3->null


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/ 

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


http://www.ppmy.cn/news/63607.html

相关文章

强烈推荐:一款中文AI问答、创作、绘画工具

前言 相信很多人已经听过ChatGPT这款人工智能机器人了&#xff0c;它能够根据用户输入的内容&#xff0c;自动生成智能回复。它使用自然语言处理技术&#xff0c;通过学习大量的文本资料&#xff0c;能够模拟人类的对话行为。它是由OpenAI开发的&#xff0c;一家非常伟大的人工…

【语义分割】标注工具ISAT with segment anything介绍

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 极速分割标注工具 1. 正文 1.1 安装 创建虚拟环境 conda create -n ISAT_with_segment_anything python3.8 conda activate ISAT_with_segment_anyt…

云原生Istio安装和使用

目录 1 Kubernetes集群环境2 安装Istio2.1 快速部署Istio2.2 回顾K8S组件以及使用2.2.1 Deployment2.2.2 Labels and Selectors2.2.3 Namespace2.2.4 Service2.2.5 Ingress 2.3 初步感受istio2.4 手动注入2.5 自动注入sidecar 1 Kubernetes集群环境 Istio支持在不同的平台下安装…

【数组排序算法】

目录 一、数组排序算法1、冒泡排序算法1.1、图形解释1.2、冒泡算法的脚本写法 二、直接选择排序1.1、动态图解1.2、直接选择排序算法的脚本编写 三、直接插入排序1.1、基本思想&#xff1a;1.2、动态图解1.3、直接插入排序的算法脚本编写 四、反向序列算法1.1、反向序列算法的脚…

Hive为什么要分桶?

1.获得更高的查询处理效率 在 分区数量过于庞大 以至于可能导致文件系统崩溃时&#xff0c;或数据集 找不到合理的分区字段 时&#xff0c;我们就 需要 使用分桶 来解决问题了。 分区中的数据可以被进一步拆分成桶 &#xff0c;不同于分区对列直接进行拆分&#xff0c;桶往往使…

深入了解Dubbo SPI 工作机制——@Adaptive(6)

Adaptive这个注解就是适配策略&#xff0c;我都是称呼为最佳适配子类&#xff0c;或者最佳适配类。就是找到最佳的子实现类的&#xff0c;其实就是默认的类。这个注解可以打在类上方&#xff0c;那么dubbo SPI机制通过接口获取实例类&#xff0c;就是获取到有Adaptive注解的实现…

【MySQL】SQL优化

记录Mysql学习笔记&#xff0c;大部分图片来自黑马程序员MySQL教程。 文章目录 插入数据insert优化load 主键优化order by优化group by优化limit优化count优化update优化总结 插入数据 insert优化 插入多条数据的时候&#xff0c;可以按以下方式优化。 批量插入时&#xff…

Redis 主从 + 哨兵模式搭建

前言&#xff1a;以Linux环境为示例 一、整体架构&#xff08;1主 2从 3哨兵&#xff09; 二、redis 安装 1、安装路径&#xff1a;/usr/local/redis/redis-6382&#xff08;可自行指定&#xff09; 2、解压安装包&#xff1a; 直接解压&#xff1a;tar -axvf redis-5.0.…