自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 移除石子的最大得分(LeetCode)

题目:你正在玩一个单人游戏,面前放置着大小分别为 a​​​​​​、b 和 c​​​​​​ 的 三堆 石子。每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分。当存在 两个或更多 的空堆时,游戏停止。给你三个整数 a 、b 和 c ,返回可以得到的 最大分数 。思路:三堆石子,一共a+b+c个,每次取走两个,一共可以取(a+b+c/2)次,但是当任意两堆石子被取完时游戏结束,则只能取(a+b)/(b+c)/(a+c)次代码实现: public int maximumScore

2022-01-22 10:47:25 2290

原创 判断子序列(LeetCode)

题目:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/is-subsequence著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...

2021-12-30 22:07:37 256

原创 找不同(LeetCode)

题目:给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。思路:先遍历字符串 s,对s中的每个字符都将计数值加 1;然后遍历字符串 t,对t中的每个字符都将计数值减 1。当发现某个字符计数值为负数时,说明该字符是新添加的. private static char findTheDifference(String s, String t) { //存放26个字母 int[

2021-12-29 12:26:07 3392

原创 字符串相加(LeetCode)

题目:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。思路:按照个位数和个位数相加,逢十进一. private static String addStrings(String num1, String num2) { StringBuilder sb = new StringBuilder(); int i

2021-12-27 22:22:14 3031

原创 存在重复元素(LeetCode)

题目:给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。思路:就是让给数组去重.1.数组排序,前一个和后一个比较.2.把数组元素装到HashSet集合中,比较装后,HashSet的长度和之前数组的长度.第1种:在这里插入代码片 private static boolean containsDuplicate(Integer[] arr) { int length = ar

2021-12-22 14:59:21 87

原创 爬楼梯(LeetCode)

题目:爬楼梯,假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。思路:爬1阶台楼梯有一种方法,爬2阶楼梯有两种方法,爬3阶楼梯有(1,1,1)(1,2)(2,1)有三种方法。。。往后依次类推,你会发现爬n阶楼梯,需要爬(n-1)阶楼梯和爬(n-2)阶楼梯的方法和。可以使用递归的方法解决这个问题。 private static int climbStairs(int n) { in

2021-12-07 22:41:07 92 1

原创 加一(LeetCode)

题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。思路:考虑最后一位是不是9和是不是每一位都是9.拿出最后一个数进行加1,如果最后一个是9,将最后一个数赋值成0,向前一个数进1,如果前一个数也是9,再向前进1,直至不是9时,将该数组返回,如果全是9,则数组长度加1,第一位是1,其余全是0. private static int[] plusOne(

2021-12-01 21:30:31 194

原创 最大子序和

题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。思路:贪心算法:逐步获取最优解。若当前指针所指元素之前和小于0,则丢弃当前元素之前的数列public class MaxSubArray { public static void main(String[] args) { int[] nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4}; System.out.println(m

2021-11-17 22:16:09 38

原创 拼接最大整数

题目描述:将数组中的所有元素,组成一个最大的多位整数。思路:循环开始,拿出第一个元素和后面的每一个元素进行拼接比较(a+b比较b+a),a+b<b+a时,把b放到第一个元素的位置,一轮比较下来,就确定了最大开头的元素。之后拿第二个元素和后面的每个元素进行比较,直到循环结束。public class MaxInt { public static void main(String[] args) { int[] arr = {312, 13, 311};

2021-11-16 22:20:43 329

原创 搜索插入位置

题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。说明:nums 为无重复元素的升序排列数组思路:升序,无重复元素的数组,循环遍历去和目标值进行对比,如果大于等于目标值,则返回该值的索引,如果遍历完都小于目标值,则返回数组长度public class SearchInsertionPosition { private int searchInsertionPosition(int[] arr,int targ

2021-11-09 22:19:59 195

原创 最长公共前缀

题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。例如输入:strs = [“flower”,“flow”,“flight”],输出:“fl”。输入:strs =[“dog”,“racecar”,“car”,输出:""。思路一:横向扫描,那第一个去和后面的每一个进行比较,每次比较之后把公共前缀留下来,再去和下一个比较,直到比到最后一个,或者比到没有公共前缀时结束。代码实现: //方法一横向扫描 public String longestCommonP

2021-11-04 21:48:15 42

原创 插入排序思想及代码实现

插入排序插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。插入排序基本思想插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较(一开始时,有序表中仅有一个元素),将它插入到有序表中的适当位置,使之成为新的有序表。插入排序代码实现public class Ch

2021-07-14 22:28:43 101

原创 选择排序思路及代码实现

选择排序基本介绍选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。基本思想选择排序(select sorting) 也是一种简单的排序方法。它的基本思想是:第一 次从arr[0]到arr[n-1]中选取最小值, 与arr[0]交换,第二次从arr[1]到 arr[n-1]中选取最小值,与arr[1]交换, 第三次从arr[2]到arr[n-1]中1选取最小值,与arr[2]交换,…第i次从arr[i-1]到 arr[n-1]中选取最小值,与

2021-07-13 22:28:54 111

原创 冒泡排序及一个小小的优化

冒泡排序基本介绍:冒泡排序(Bubble Sorting) 的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始) , 依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。优化思路因为排序的过程中,各元素不断接近自己的位置,如果-趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。public class MaoPao { public static voi

2021-07-12 22:33:22 49

原创 递归:八皇后问题(回溯算法)

什么是八皇后问题:八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即: 任意两个皇后都不能处于同一行 、同一列或同一斜线上,问有多少种摆法(92)思路梳理:第一个皇后先放第一行第一列第二个皇后放在第二行第一列、然后判断是否 OK, 如果不 OK,继续放在第二列、第三列、依次把所有列都放完,找到一个合适继续第三个皇后,还是第一列、第二列……直到第 8 个皇后也能放在一个不冲

2021-07-12 20:55:32 78

原创 递归:迷宫问题

概念:简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题同时可以让代码变得简洁。递归需要遵守的重要规则1)执行一个方法时,就创建一个新的受保护的独立空间(栈空间)2)方法的局部变量是独立的,不会相互影响。3)如果方法中使用的是引用类型变量,I就会共享该引用类型的数据.4)递归必须向退出递归的条件逼近,否则就是无限递归,死龟了。5) 当一个方法执行完毕,或者遇到return, 就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法

2021-07-08 21:16:46 98 1

原创 中缀表达式转后缀表达式

中缀表达式转后缀表达式第一种方式转换思路:我们使用一个stack栈结构存储操作符,用一个List结构存储后缀表达式结果读取到的如果是数字,则直接存入list中当读取到左括号"("时,直接压栈,当读取到运算符时,分两种情况讨论a.当运算符栈为空或者栈顶操作符的优先级小于当前运算符优先级时(如+和-的优先级低于 * 和 /),直接入栈b.当运算符不为空时且栈顶操作符的优先级大于或等于当前运算符优先级时,循环执行出栈操作并加入list中,直到遇到优先级小于当前运算符的元素为止。循环执行完后再将当

2021-07-06 20:41:43 38

原创 前缀(波兰表达式)、中缀、后缀逆波兰表达式表达式()

前缀表达式前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前前缀表达式的计算机求值从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果例如: (3+4)X5-6对应的前缀表达式就是- X +3456,针对前缀表达式求值步骤如下:从右至左扫描,将6、5、4、3压入堆栈遇到+运算符,因此弹出3和4 (3为栈项元素,4为次顶元素),计算出3+4

2021-07-05 21:14:19 179

原创 栈实现综合计算器

实现需求给定一个仅含有数字和基础运算符(+,-,*,/)的表达式,使用栈计算表达式的计算结果实现思路实现代码public class ArrayStackDemo { public static void main(String[] args) { //计算表达式 String expression = "7+100*2-8"; //创建两个栈,一个存放数字,一个存放符号 ArrayStack numStack = new

2021-06-23 23:56:15 53

原创 栈的快速入门

栈的快速入门用数组模拟栈的使用,由于栈是一种有序列表,当然可以使用数组的结构来储存栈的数据内容。下面我们就用数组模拟栈的出栈,入栈等操作。代码实现import java.util.Scanner;public class ArrayStackDemo { public static void main(String[] args) { ArrayStack stack = new ArrayStack(4); String key = "";

2021-06-22 22:08:20 63

原创 什么是稀疏数组,二位数组与稀疏数组相互转换

稀疏数组定义:当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组稀疏数组优势:当普通数组有效数据很少,大部分为空数据的时候,使用稀疏数组数进行数据的压缩,以节省空间。二维数组与稀疏数组的转换public class SparseArray { public static void main(String[] args) { //1.先创建一个10x10的二维数组,里面给上2个数据,其余全是0 int[][] arr = new

2021-05-26 22:42:04 50

原创 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false

题目信息:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 :输入:x = 121输出:truepublic class Demo1 { public st

2021-02-24 23:25:14 3292

原创 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。

题目信息:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 :输入:nums = [2,7,11,15], target =

2021-02-18 21:38:37 1318

原创 java8:公共定义的函数式接口

公共定义的函数式接口从jdk1.8开始为了方便用户开发专门提供了一个新的包:java.util.function在这个包里面针对于用户可能用到的函数式接口做了一个公共定义。最为核心的有四个接口:功能性接口:Function<T, R>有输入参数,有返回值是对接收一个T类型参数,返回R类型的结果的方法的抽象通过调用apply方法执行内容需求:给定一个字符串,返回字符串长度import java.util.function.Function;public class D

2021-02-02 23:40:44 260 1

原创 Mybatis多表查询(一对一,一对多,多对多)

一对一查询创建Order和User实体public class Order { private int id; private Date ordertime; private double total; //代表当前订单从属于哪一个客户 private User user;}public class User { private int id; private String username; private Strin

2020-09-16 22:58:19 102

原创 Mybatis动态 SQL

if<select id="findByCondition" parameterType="user" resultType="user"> select * from user <where> <if test="id!=0"> and id=#{id} </if> <if test="username!=null"> and use

2020-09-03 22:23:17 73

原创 Mybatis的Dao层实现

传统开发方式1.编写UserDao接口public interface UserDao { List<User> findAll() throws IOException;}2.编写UserDaoImpl实现public class UserDaoImpl implements UserDao { public List<User> findAll() throws IOException { InputStream resourceAsS

2020-09-03 00:12:28 69

原创 MyBatis核心配置文件概述(environments,mapper,Properties,typeAliases,plugins标签)

environments标签数据库环境的配置,支持多环境配置<environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driv

2020-09-02 00:06:34 148

原创 Mybatis的快速入门

Mybatis的快速入门1.添加MyBatis的坐标 <!--mybatis坐标--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> &

2020-08-25 22:29:52 72

原创 springMVC异常处理两种方式

简单异常处理器SimpleMappingExceptionResolver

2020-08-18 23:04:43 123

原创 SpringMVC拦截器-快速入门

SpringMVC拦截器-快速入门写一个类实现拦截器接口HandlerInterceptor,或者写一个类继承实现拦截器接口的类.public class MyInterceptor implements HandlerInterceptor { //在目标方法执行之前 执行 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws S

2020-08-14 00:38:34 70

原创 SpringMVC的请求-文件上传

SpringMVC的请求-文件上传添加依赖<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version></dependency><dependency> <grou

2020-08-12 21:08:16 70

原创 文件上传表单三要素

文件上传表单三要素第一要素:提交方式必须为post请求第二要素:表单的enctype属性是多部分表单形式,及enctype=“multipart/form-data”第三要素:表单项type=“file”<form action="${pageContext.request.contextPath}/show1" method="post" enctype="multipart/form-data"> 用户<input type="text" name="userna

2020-08-11 22:28:49 899

原创 ApplicationContext的继承

ApplicationContext介绍applicationContext:接口类型,代表应用上下文,可以通过其实例获得 Spring 容器中的 Bean 对象.ApplicationContext的实现类1. ClassPathXmlApplicationContext它是从类的根路径下加载配置文件 推荐使用这种public class Demo { public static void main(String[] args) { ApplicationContex

2020-08-08 17:40:42 420

原创 Bean的依赖注入的数据类型

Bean的依赖注入的数据类型编写Dao接口和Dao实现类public interface UserDao { public void save();}public class UserDaoImpl implements UserDao { public void save() { System.out.println("UserDaoImpl中的save方法执行了..."); }}创建spring的核心配置文件<?xml vers

2020-08-07 00:42:14 240

原创 Bean的依赖注入的方式

Bean的依赖注入编写Dao接口和Dao实现类public interface UserDao { public void save();}public class UserDaoImpl implements UserDao { public void save() { System.out.println("UserDaoImpl中的save方法执行了..."); }}编写UserService接口和UserServiceImpl实现类

2020-08-05 22:05:18 228

原创 spring实例化bean的三种方式

spring实例化bean的三种方式首先导入spring开发的基本包坐标<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.5.RELEASE</version&g

2020-08-04 23:04:41 122

原创 idea中关于git的使用(基础操作)

idea中git的配置项目的添加与提交在idea中使用git,需要先进行配置.如果你的git安装是默认地址,则idea会自动找到git的位置,否则需要手动设置.直接参看图片. 通过2操作,设置你安装git的路径,最后点击3出现如下提示框,说明配置成功.在idea中创建工程,将工程交给git管理.选择你需要git管理的项目确定之后,你会发现你的项目目录下,多了.git目录;这是个隐藏文件夹,如果看不到,记得开启隐藏文件夹;现在你可以将你的项目交给git管理,但不是里面的所有

2020-05-13 00:24:45 313

原创 假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?

题目描述:假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?最后的误差判断是小数点6位输入描述:输入起始高度,int型输出描述:分别输出第5次落地时,共经过多少米第5次反弹多高import java.util.ArrayList;import java.util.Scanner;public class Demo9 { public static void main(String[] args) {

2020-05-09 22:34:45 2138

原创 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数

题目描述:输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。输入描述:输入一个整数(int类型)输出描述:这个数转换成2进制后,输出1的个数package com.zr;import java.util.Scanner;public class Demo8 { public static void main(String[] args) { ...

2020-04-28 23:00:27 1427

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除