leetcode ListNode便捷工具类

news/2025/1/9 12:37:56/

leetcode ListNode便捷工具类

  • 描述
  • 工具类
  • demo代码

描述

leetcode的时候,链表之类的给的都是[[1,2,3][2,3]]这种格式的,对本地debugbug不太友好,所以自己封装了一个。

工具类

@Slf4jclass ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }protected static ListNode preLink(int val, ListNode pre) {ListNode now = new ListNode(val);pre.next = now;return now;}protected static ListNode buildListedList(Integer[] params){if (Objects.isNull(params) || params.length == 0){return null;}ListNode root = new ListNode(params[0]);ListNode pos = root;for (int i=1; i<params.length; i++){pos = preLink(params[i], pos);}return root;}protected static ListNode buildListedList(String s){if (StringUtils.isEmpty(s)){return null;}String[] items = s.split(CommonConstants.COMMA);Integer[] params = new Integer[items.length];for (int i=0; i< items.length; i++){params[i] = Integer.parseInt(items[i]);}return buildListedList(params);}/*** 切分正则表达式   [[1,4,5],[1,3,4],[2,6]]*/private static final Pattern pattern= Pattern.compile("([0-9,]{2,})");protected static ListNode[] buildArray(String s){List<ListNode> list = new ArrayList<>();Matcher matcher = pattern.matcher(s);while (matcher.find()){list.add(buildListedList(matcher.group()));}return list.toArray(new ListNode[0]);}public static void main(String[] args) {String s = "[[1,4,5],[1,3,4],[2,6]]";
//        String s = "[1,4,5]";Matcher matcher = pattern.matcher(s);while (matcher.find()){System.out.println(matcher.group());}}protected static String printPath(ListNode root){if (Objects.isNull(root)){return "";}StringBuilder builder = new StringBuilder();ListNode pos = root;while (pos != null){builder.append(pos.val).append(" => ");pos = pos.next;}builder.delete(builder.length()-4, builder.length());log.debug(builder.toString());return builder.toString();}protected static boolean checkOrder(ListNode root, boolean ascend){if (ascend){int pre = Integer.MIN_VALUE;while (root != null){if (pre > root.val){return false;}pre = root.val;root = root.next;}return true;}int pre = Integer.MAX_VALUE;while (root != null){if (pre < root.val){return false;}pre = root.val;root = root.next;}return true;}}

demo代码

github代码地址


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

相关文章

Makefile和Dockerfile

1.制作Makefile文件 NAME findsec/make-docker:v1 default: build run build:docker build -t $(NAME) . push:docker push $(NAME) run:docker run -d -it --privilegedtrue $(NAME) /usr/sbin/init2.制作Dockerfile文件 FROM centos:centos7.7.1908#配置国内镜像 RUN curl…

数据结构:堆的应用(堆排序和topk问题)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》 文章目录 堆排序建堆堆的删除思想排序代码实现 top k 问题思路代码实现 总结 堆排序 堆排序即是 先将数据建堆&#xff0c;再利用堆删除的思想来排序。 将待排序数组建堆将堆顶数据与数组尾部数…

Java超级玛丽小游戏制作过程讲解 第六天 创建背景类

package com.sxt;import java.awt.image.BufferedImage;public class BackGround {//当前场景要显示的图像 private BufferedImage bgImagenull;//记录当前是第几个场景 private int sort;//判断是否是最后一个场景 private boolean flag;public BackGround(){}public BackGrou…

C++中new/malloc,delete/free的区别

new和delete是操作符&#xff0c;malloc和free是库函数。 执行new实际上执行了两个操作&#xff1a;1、分配未初始化的内存空间&#xff0c;也就是调用malloc库函数。2、使用对象的构造函数对空间进行初始化&#xff0c;并返回空间的首地址。 如果第一步分配空间出现问题&…

Linux 基础(九)软件包管理

软件包管理 概念软件包管理工具RPMrpm安装rpm卸载 YUM&#xff08;推荐&#xff09;YUM仓库YUM管理软件 概念 各个系统都有自己的软件包管理工具&#xff0c;方便用户管理&#xff0c;使用各种软件&#xff1b; 只是大部分Windows用户可能并没有太关注&#xff0c;其实也是有的…

flask---》更多查询方式/连表查询/原生sql(django-orm如何执行原生sql)/flask-sqlalchemy

更多查询方式 #1 查询&#xff1a; filer:写条件 filter_by&#xff1a;等于的值 # 查询所有 是list对象 res session.query(User).all() # 是个普通列表 print(type(res)) print(len(res))# 2 只查询某几个字段 # select name as xx,email from user; res session.…

Vue电商项目--组件通信

组件通信6种方式 第一种&#xff1a;props 适用于的场景&#xff1a;父子组件通信 注意事项&#xff1a; 如果父组件给子组件传递数据&#xff08;函数&#xff09;&#xff1a;本质其实是子组件给父组件传递数据 如果父组件给子组件传递的数据&#xff08;非函数&#xf…

股票量化分析工具QTYX使用攻略——盘口异动实时监测(更新2.6.8)

QTYX简介‍‍‍ 股票量化交易系统QTYX是一个即可以用于学习&#xff0c;也可以用于实战炒股分析的系统。 分享QTYX系统目的是提供给大家一个搭建量化系统的模版&#xff0c;最终帮助大家搭建属于自己的系统。因此我们提供源码&#xff0c;可以根据自己的风格二次开发。 关于QTY…