省 市 县 三级联动

news2025/1/14 18:29:53

大纲


 一、导入省市县数据表(t_region)

 二、引入jar包

三、导入所需util类(整体框架)

 

四、编写代码

 1、配置数据库相关信息(数据库名、用户名、密码)    config.propreties

#oracle9i
#driver=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:orcl
#user=scott
#pwd=123

#sql2005
#driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
#url=jdbc:sqlserver://localhost:1433;DatabaseName=test1
#user=sa
#pwd=123

#mysql
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
user=root
pwd=1234

 2、创建数据库中对应数据表(t_region)的省市县实体类,即 Region.java

package com.zking.jquery.entity;
/**
 * 地区实体类
 * @author gss
 *
 */
public class Region {
	private long id;//编号
	private long parent_id;//父级编号
	private long region_id;
	private long region_parent_id;
	private String region_name;//名称
	private Integer region_type;//类型 1省 2市 3县
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public long getParent_id() {
		return parent_id;
	}
	public void setParent_id(long parent_id) {
		this.parent_id = parent_id;
	}
	public long getRegion_id() {
		return region_id;
	}
	public void setRegion_id(long region_id) {
		this.region_id = region_id;
	}
	public long getRegion_parent_id() {
		return region_parent_id;
	}
	public void setRegion_parent_id(long region_parent_id) {
		this.region_parent_id = region_parent_id;
	}
	public String getRegion_name() {
		return region_name;
	}
	public void setRegion_name(String region_name) {
		this.region_name = region_name;
	}
	public Integer getRegion_type() {
		return region_type;
	}
	public void setRegion_type(Integer region_type) {
		this.region_type = region_type;
	}
	
	public Region() {
		super();
	}
	
	@Override
	public String toString() {
		return "Region [id=" + id + ", parent_id=" + parent_id + ", region_id=" + region_id + ", region_parent_id="
				+ region_parent_id + ", region_name=" + region_name + ", region_type=" + region_type + "]";
	}	
}

3、 工具类  BaseDao.java

package com.zking.jquery.dao;

import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import com.zking.jquery.util.DBHelper;
import com.zking.jquery.util.PageBean;

public class BaseDao<T> {
	
	public static interface CallBack<E>{
		public List<E> forEach(ResultSet rs) throws SQLException;
	}
	
	/**
	 * 增删改通用方法
	 * @param sql
	 * @param params
	 */
	public void executeUpdate(String sql,Object[] params) {
		Connection conn=null;
		PreparedStatement stmt=null;
		try {
			conn=DBHelper.getConnection();
			stmt=conn.prepareStatement(sql);
			ParameterMetaData metadata = stmt.getParameterMetaData();
			for (int i = 0; i < metadata.getParameterCount(); i++) {
				stmt.setObject(i+1, params[i]);
			}
			int i = stmt.executeUpdate();
			if(i<1)
				throw new RuntimeException("执行失败,影响行数为0");
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}finally {
			DBHelper.close(conn, stmt, null);
		}
	}
	
    /**
	 * 查询方法
	 * @param sql
	 * @param params
	 */
	public List<T> executeQuery(String sql,PageBean pageBean,CallBack<T> callBack){
		Connection conn=null;
		PreparedStatement stmt=null;
		ResultSet rs=null;
		try {
			conn=DBHelper.getConnection();
			//判断是否分页
			if(null!=pageBean&&pageBean.isPagination()) {
				//第一次查询返回总记录数
				String countSql=this.getCountSql(sql);
				stmt=conn.prepareStatement(countSql);
				rs=stmt.executeQuery();
				if(rs.next()) {
					Object obj=rs.getObject(1);
					pageBean.setTotal(Integer.parseInt(obj.toString()));
				}
				//第二次查询返回指定页码数并满足条件的分页结果集
				sql=this.getPagerSql(sql, pageBean);
			}
			stmt=conn.prepareStatement(sql);
			rs=stmt.executeQuery();
			//遍历结果集
			return callBack.forEach(rs);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(conn, stmt, rs);
		}
		return null;
	}
	/**
	 * 将普通SQL语句转换成查询总记录数的SQL语句
	 * @param sql
	 * @return
	 */
	private String getCountSql(String sql) {
		return "select count(1) from ("+sql+") t1";
	}
	/**
	 * 将普通SQL语句转换成查询分页记录集的SQL语句
	 * @param sql
	 * @param pageBean
	 * @return
	 */
	private String getPagerSql(String sql,PageBean pageBean) {
		return sql+" Limit "+pageBean.getStartIndex()+","+pageBean.getRows();
	}
}

4、数据操作类 RegionDao.java 继承BaseDao.java

package com.zking.jquery.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import com.zking.jquery.entity.Region;
import com.zking.jquery.util.CommonUtils;
import com.zking.jquery.util.StringUtils;

public class RegionDao extends BaseDao<Region>{
	//查询
	public List<Region> queryRegionLst(Region region){
		String sql="select id,region_id,parent_id,region_parent_id,"
				+ "region_name,region_type from t_region where 1=1";
	    //判断不为空
		if(StringUtils.isNotBlank(region.getParent_id()+""))
			sql+=" and parent_id="+region.getParent_id();
		
		return super.executeQuery(sql, null, new CallBack<Region>() {
			@Override
			public List<Region> forEach(ResultSet rs) throws SQLException {
				try {
					return CommonUtils.toList(rs, Region.class);
				} catch (Exception e) {
					e.printStackTrace();
				}
				return null;
			}
		});
	}
}

5、 工具类 CommonUtils.java

package com.zking.jquery.util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CommonUtils {
	/**
	 * 根据ResultSet数据集,利用反射机制动态赋值并返回List<T>
	 * @param rs ResultSet数据集
	 * @param clazz 实体类对象
	 * @return 返回List实体集合
	 * @throws Exception
	 */
	public static <T> List<T> toList(ResultSet rs,Class<T> clazz) throws Exception{
		//定义实体集合
		List<T> lst=new ArrayList<T>();
		//获取ResultSet的metadata列信息
		ResultSetMetaData metaData = rs.getMetaData();
		//获取对象属性集合
		Field[] fields=clazz.getDeclaredFields();
		//循环ResultSet
		while(rs.next()) {
			//反射机制实例化
			T obj = clazz.newInstance();
			for (int i = 0; i < metaData.getColumnCount(); i++) {
				//获取列名
				String columnName=metaData.getColumnLabel(i+1).toUpperCase();
				for (Field field : fields) {
					//判断属性名与列名是否相同
					if(field.getName().toUpperCase().equals(columnName)) {
						//获取属性对应的set方法名,方法名首字母大写
						String methodName="set"+field.getName().substring(0, 1).toUpperCase()+field.getName().substring(1);
						//获取属性对应的set方法
						Method method = obj.getClass().getDeclaredMethod(methodName, field.getType());
						//设置访问权限
						method.setAccessible(true);
						//执行set方法,将数据存储到对象中的相应属性中
						method.invoke(obj, rs.getObject(columnName));
						break;
					}
				}
			}
			lst.add(obj);
		}
		return lst;
	}
	
	/**
	 * 多表查询时返回结果集,利用反射机制赋值 
	 * @param rs
	 * @return 返回List<Map<String,Object>>
	 * @throws Exception
	 */
	public static List<Map<String,Object>> toList(ResultSet rs) throws Exception{
		//定义实体集合
		List<Map<String,Object>> lst=new ArrayList<Map<String,Object>>();
		//获取ResultSet的metadata列信息	
		ResultSetMetaData metaData = rs.getMetaData();
		Map<String,Object> set=null;
		while(rs.next()) {
			set=new HashMap<String,Object>();
			for (int i = 0; i < metaData.getColumnCount(); i++) {
				String columnName=metaData.getColumnLabel(i+1);
				set.put(columnName, rs.getObject(columnName));
			}
			lst.add(set);
		}
		return lst;
	}
}

6、测试Dao类是否有误        RegionDaoTest.java

package com.zking.jquery.dao;

import static org.junit.jupiter.api.Assertions.*;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import com.zking.jquery.entity.Region;

class RegionDaoTest {
	//实例化一个dao类对象
	private RegionDao regionDao = new RegionDao();
    
	private Region region;

	@BeforeEach
	void setUp() throws Exception {
		region=new Region();
	}

	@Test
	void testQueryRegionLst() {
        //给父级编号赋值
		region.setParent_id(7459);
        //调用Dao类查询方法
		List<Region> lst=regionDao.queryRegionLst(region);
		for (Region reg: lst) {
			System.out.print(reg);
		}
	}
}

测试结果没有报错,可以继续下一步


 7、RegionAction.java

package com.zking.jquery.action;

import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zking.jquery.dao.RegionDao;
import com.zking.jquery.entity.Region;
import com.zking.mvc.framework.Action;
import com.zking.mvc.framework.DriverModel;

public class RegionAction extends Action implements DriverModel<Region> {
	
	private RegionDao regionDao=new RegionDao();
	
	private Region region=new Region();
	
	private ObjectMapper mapper=new ObjectMapper();
	
	@Override
	public Region getModel() {
		return region;
	}

	@Override
	public String execute(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		List<Region> lst = regionDao.queryRegionLst(region);
		mapper.writeValue(res.getOutputStream(), lst);
		return null;
	}
}

1、创建 address.jsp 页面。先在 js 中引入 jquery.min.js 。

 将 jquery.min.js 引入到 address.jsp 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>省 市 县之三级联动</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
	//初始化查询
	searchProvince(7459);
	//select的change事件
	$('#province').change(function(){
		//searchProvince($(this).val());
        //this:当前省份的select
		var pid=$(this).val();
		if(pid=="")
			return false;
		
		$.ajax({
			//请求路径
			url:'regionAction.action',
			//请求参数
			data:{'parent_id':pid},
			//提交方式
			type:'post',
			//数据类型
			dataType:'json',
			//是否同步
			async:false,
			//请求成功之后的回调方法
			success:function(data){
				//console.log(data);
				//清空选项,只保留第一个选项
				$('#city option:not(:first)').remove();
				//循环
				$.each(data,function(idx,elem){
					var region=elem;
					//绑定元素
					$('#city').append('<option value="'+region.id+'">'+region.region_name+'</option>');
					console.log(elem);
				});
			}
		});
	});
	
	$('#city').change(function(){
		//searchProvince($(this).val());
		var pid=$(this).val();
		if(pid=="")
			return false;
		
		$.ajax({
			//请求路径
			url:'regionAction.action',
			//请求参数
			data:{'parent_id':pid},
			//提交方式
			type:'post',
			//数据类型
			dataType:'json',
			//是否同步
			async:false,
			//请求成功之后的回调方法
			success:function(data){
				//console.log(data);
				//清空选项,只保留第一个选项
				$('#county option:not(:first)').remove();
				//循环
				$.each(data,function(idx,elem){
					var region=elem;
					//绑定元素
					$('#county').append('<option value="'+region.id+'">'+region.region_name+'</option>');
					console.log(elem);
				});
			}
		});
	});
	
});

function searchProvince(pid){
	//var pid=$(this).val();
	if(pid=="")
		return false;
	
	$.ajax({
		//请求路径
		url:'regionAction.action',
		//请求参数
		data:{'parent_id':pid},
		//提交方式
		type:'post',
		//数据类型
		dataType:'json',
		//是否同步
		async:false,
		//请求成功之后的回调方法
		success:function(data){
			//console.log(data);
			//清空选项,只保留第一个选项
			$('#province option:not(:first)').remove();
			//循环
			$.each(data,function(idx,elem){
				var region=elem;
				//绑定元素
				$('#province').append('<option value="'+region.id+'">'+region.region_name+'</option>');
				console.log(elem);
			});
		}
	});
}
</script>

</head>
<body>
	<h2>省市县三级联动 lxy</h2>
	<select id="province" style="border-radius: 4px;font-size:16px;font-family:宋体;background-color:#99FFFF">
		<option value="">-----请选择-----</option>
	</select>
	&nbsp;
	<select id="city" style="border-radius: 4px;font-size:16px;font-family:宋体;background-color:#99FF99">
		<option value="">-----请选择-----</option>
	</select>
	&nbsp;
	<select id="county" style="border-radius: 4px;font-size:16px;font-family:宋体;background-color:#FFCCCC">
		<option value="">-----请选择-----</option>
	</select>

</body>
</html>

打印结果:


2、在 web.xml 中配置过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Jquery_address</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <filter>
  	<filter-name>FilterEncoding</filter-name>
  	<filter-class>com.zking.jquery.util.EncodingFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>FilterEncoding</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <servlet>
  	<servlet-name>ActionServlet</servlet-name>
  	<servlet-class>com.zking.mvc.framework.ActionServlet</servlet-class>
  	<init-param>
  		<param-name>config</param-name>
  		<param-value>/mvc.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>ActionServlet</servlet-name>
  	<url-pattern>*.action</url-pattern>
  </servlet-mapping>
  
</web-app>

3、将 mvc.xml 导入到 src 根目录下  配置RegionAction

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config[
	<!ELEMENT config (action*)>
	<!ELEMENT action (forward*)>
	<!ELEMENT forward EMPTY>
	<!ATTLIST action 
		path CDATA #REQUIRED
		type CDATA #REQUIRED
	>
	<!ATTLIST forward
		name CDATA #REQUIRED
		path CDATA #REQUIRED
		redirect (true|false) "false"
	>
]>
	<!-- config标签:可以包含0~N个action标签 -->

<config>
	<action type="com.zking.jquery.action.RegionAction" path="/regionAction"></action>
</config>

                                            最终效果展示(可自行美化)

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

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

相关文章

Linux下redis安装教程

redis安装教程 首先需要安装gcc依赖 yum install -y gcc tcl注&#xff1a;这里如果安装失败可以百度解决 进入/usr/local/src目录&#xff0c;将下载的安装包放在该目录 cd /usr/local/src解压该目录 tar -zxvf redis-6.2.6.tar.gz解压后src下面多了一个redis-6.2.6 进入…

Redis 为什么这么快,你知道 I/O 多路复用吗?

今天我们讨论一下面试高频题&#xff0c;为什么 Redis 那么快&#xff1f; 首先&#xff0c;你可以先想一下答案&#xff0c;我先说下大家普遍的答案&#xff1a; 单线程基于内存操作&#xff0c;速度快I/O 多路复用 相信很多人第一时间回答出来上面这些&#xff0c;那么面试官…

从开发角度读懂公司卫生间一直有人窜稀的原理

不知道你有没有这样的经历&#xff0c;一直忙忙碌碌&#xff0c;需求不断&#xff0c;当你终于解决完手头的事情&#xff0c;突然特别着急想要去卫生间的时候&#xff0c;仅有的几个门总是关着的&#xff0c;于是怀疑&#xff0c;可能其他人更需要这次机会&#xff0c;他们也一…

最基础的协同过滤介绍

文章目录1.到底什么是协同过滤2.协同过滤的一般步骤3.基于用户的CF (User-CF)3.1 基本介绍3.2 用户相似度3.2.1 用户相似度基本介绍3.2.2 用户相似度改进&#xff1a;ICU3.3 User-CF的缺点4.基于项目的CF (Item-CF)4.1 基本介绍4.2 用户相似度4.2.1 用户相似度基本介绍4.2.2 用…

xss-labs/level6

我们输入平常的payload如下 <script>alert(xss)</script> 界面回显如下 源代码如下所示 可以发现后台服务器对特殊字符进行插入操作 我们寄希望于后台不要插入下划线到onxxx关键字中 所以构造如下 " onclickjavascript:alert(xss)>// 由于界面没有回…

教程七 在Go中使用Energy创建跨平台GUI - Cookies

教程-示例-文档 介绍 本文介绍在energy中的cookie操作 在energy中可以对cookie的增加、修改和删除以达到某种目的 对cookie操作时&#xff0c;是以调用功能函数后触发事件的方式返回调用功能函数的结果 运行此示例&#xff0c;需要安装好Go和Energy开发环境&#xff1a;教…

有问题直接说问题,问什么在不在???

有什么问题可以直接说&#xff0c; 比如把你的项目地址、需求、错误复现步骤通过任何方式告诉我 比如&#xff1a; CSDN&#xff1a;发送消息&#xff0c;博客评论等&#xff0c;禁止发"在吗" 发邮件&#xff1a;xuxiaoweixuxiaowei.com.cn。 微信群&#xff1a; 禁…

麦芽糖-紫杉醇maltose-Paclitaxel

麦芽糖-紫杉醇maltose-Paclitaxel 中文名称&#xff1a;麦芽糖-紫杉醇 英文名称&#xff1a;maltose-Paclitaxel 别称&#xff1a;紫杉醇修饰麦芽糖&#xff0c;PTX-麦芽糖 还可以提供PEG接枝修饰麦芽糖&#xff0c;麦芽糖-聚乙二醇-紫杉醇,Paclitaxel-PEG-maltose,紫杉…

redis配置文件详解

一、概述 redis的配置文件中&#xff0c;有着许多说明和可配置项&#xff0c;了解它们能够更好的使用redis去解决开发中遇到的困难。 此配置文件基于linux下的redis-6.2.4版本。 二、单位换算描述-units 在配置文件开头就有这么一段&#xff1a; 这里描述了一些基本的度量…

信息流广告投放的技巧

随着互联网的发展&#xff0c;信息时代已经到来&#xff0c;信息流广告逐渐受到众多广告主的青睐。 做广告&#xff0c;不仅需要投入大量的精力&#xff0c;还需要一定的资金&#xff0c;花这么多&#xff0c;自然是要收获不错的收益。广告主在广告信息流的时候都追求高ROI&am…

蓝牙耳机什么牌子好?安卓蓝牙耳机性价比推荐

戴耳机所听到的音效是完全不同的&#xff0c;体验感也是完全不一样&#xff01;而有线的耳机戴起来一点也不方便&#xff0c;因此更多的人选择无线蓝牙耳机&#xff0c;但是很多新手发帖不知道蓝牙耳机啥牌子好&#xff1f;安卓手机的配置越来越好&#xff0c;深受大众的欢迎&a…

Python中的dump() 、load()和dumps()、loads()使用及示例

Python中的dump() 、load()和dumps()、loads() 结论&#xff1a; 1.不加s的标识对json文件的读写&#xff0c;将内存中值读取写入到json后缀文件&#xff0c;或者将json后缀文件中内容读取到内存 2.加了s的主要是字符串类型和其他数据类型的互转 JSON(JavaScript Object No…

KubeSphere 社区双周报 | KubeKey v3.0.2 发布 | 2022-11-24

KubeSphere 从诞生的第一天起便秉持着开源、开放的理念&#xff0c;并且以社区的方式成长&#xff0c;如今 KubeSphere 已经成为全球最受欢迎的开源容器平台之一。这些都离不开社区小伙伴的共同努力&#xff0c;你们为 KubeSphere 提出了很多建设性意见&#xff0c;也贡献了很多…

扫除知识共享障碍,天翎知识文档管理系统+群晖NAS一体化解决方案

编者按&#xff1a;知识共享是企业知识管理的重要模块&#xff0c;本文阐述了企业知识共享中常遇到的障碍&#xff0c;并指出知识文档管理系统可以帮助解决这些问题&#xff0c;而NAS与知识文档系统的结合更是锦上添花。 关键词&#xff1a;文档分类&#xff0c;版本管理&…

你想要知道的“全电发票接口”

老规矩&#xff0c;即使你看到此文前&#xff0c;你多少知道点“全电发票”的一些知识&#xff0c;这里方便那些还没得空抢先获取的知友小伙伴们梳理下相关知识点。 ** 一、全电发票具体的定义 ** 全电发票是国家税务总局随着金税四期推出的全国统一的电子发票服务平台&…

护眼台灯该怎么样选择?2022如何选择一款好的护眼台灯

随着社会的高度发展&#xff0c;人们的生活水平也渐渐得到提高&#xff0c;大家也慢慢开始在意平时生活中的健康问题了&#xff0c;比如眼睛健康就是一个很重要的点。现在的年轻人&#xff0c;尤其是青少年儿童&#xff0c;走在大街上普遍都能看见带着眼睛&#xff0c;近视情况…

B2B电子商务网站方案:为专用设备行业注入新动力,加快产业数字化转型升级

专用设备是指设备的结构、性能专门针对某一种或一类对象&#xff0c;实现一项或几项功能的工业&#xff0c;包括工程机械、光伏设备、锂电设备、3C设备、半导体设备等。近年来&#xff0c;受市场对专用设备的应用需求不断扩大、产业技术升级趋势加快等影响&#xff0c;我国专用…

段错误,虚拟内存,内存映射 CSAPP

相信写代码的或多或少都会遇到段错误&#xff0c;segmentation fault. 今天终于看到这里面的底层原理 参考&#xff1a; https://greenhathg.github.io/2022/05/18/CMU213-CSAPP-Virtual-Memory-Systems/18-Virtual-Memory-SystemsSimple memory system exampleAddress Trans…

Las Vegas 与回溯组合法解八皇后问题

八皇后问题&#xff0c;是一个古老而著名的问题&#xff0c;是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯贝瑟尔于1848年提出&#xff1a;在88格的国际象棋上摆放八个皇后&#xff0c;使其不能互相攻击&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上…

刷爆力扣之卡牌分组

刷爆力扣之卡牌分组 HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&#xff0c;每个…