- 博客(21)
- 收藏
- 关注
原创 小白的LeetCode日记记录Day12(动态规划)
25.连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。解法:动态规划。DP[i]表示以nums[i]结尾的子数组最大和。以i作为结尾,意思就是这个数一定会加上去,那么要看的就是这个数前面的部分要不要加上去。大于零就加,小于零就舍弃。首先考虑初始值,初始值为nums[0],元素值为负数的对子数组和为负贡献,因此得出两个公式若DP[i-1]≤0,则DP[i]=nums[i]若DP[i-1]≥0,则DP[i]=nums
2021-01-11 00:08:29
161
原创 小白的LeetCode日记记录Day11(节点的浪漫相遇)
24.两个链表的第一个公共节点输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:解法:双方都把指针先指向各自的头结点,当各自的节点遍历完之后,分别指向对方的头结点继续遍历,直到两个节点相等。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) {
2021-01-09 23:14:00
182
原创 小白的LeetCode日记记录Day10
23.第一个只出现一次的字符在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。解法:利用HashMap。先把字符串存为字符数组挨个放进map(key为字符),若字符不存在,则把value设置为true,若存在了则改为false),最后遍历字符数组,如果map取到他的值为true,返回这个字符,特殊情况返回空字符。class Solution { public char firstUniqChar(String s) { Map<C
2021-01-08 23:59:53
173
原创 小白的LeetCode日记记录Day9
22.最小的k个数输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。解法一:排序。创建一个数组,将整数数组排序后,遍历数组将k个元素放入新数组,最后返回。(记得考虑特殊值,数组为空和k=0的情况)class Solution { public int[] getLeastNumbers(int[] arr, int k) { Arrays.sort(arr); int[] nu
2021-01-08 23:53:26
94
原创 小白级理解:关于TCP/IP
因为TCP面向连接,所以需要保证客户端和服务端的数据完整性和有序性三次握手:首先服务端被动打开接受客户端连接,客户端主动打开第一次:SYN报文段SYN同步位置1,ACK确认位置0客户机发送SYN报文段,SYN报文段里说明要连接服务端的端口和客户端顺序号SEQ,用来对客户端发送的数据进行排序(可选数据最大长度MSS)第二次:SYN+ACK报文段SYN同步位置1,ACK确认位置1服务端收到客户机发来的报文后,对SYN报文段进行确认(对客户端初始序号加一,ACK客户端确认号=SEQ客户端+1),同
2021-01-07 12:20:59
190
1
原创 小白的LeetCode日记记录Day8
21.数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。解法一:数组排序后找出中间数即为该数。class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums.length/2]; }}解法二:利用Hashmap统计每个数的次数,返
2021-01-05 23:47:55
113
原创 小白的LeetCode日记记录Day7
21.从上到下打印二叉树(广度优先)从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]首先介绍下广度优先,广度优先通俗来说就是先横向打印二叉树每层元素即按层打印,广度优先通常借助队列先进先出的特性来实现。这里要将本层全部节点打印到一行,并将
2021-01-04 23:44:21
100
原创 小白的LeetCode日记记录Day6
20.包含min函数的栈定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。解法一:利用辅助类:链表。第一个想到的办法就是利用链表的头结点,定义一个链表,链表包含最小值,节点值和下一个节点。推栈和弹栈从头结点开始,push需要先判断栈是否为空,是的话创建一个新节点,把节点值,当前值放进去,下一个节点设置为空。不为空的话,把节点值放进去,最小值利用Math.min()方法判断,下一个节点设置为当前节点。弹栈须判
2021-01-03 23:57:19
102
原创 小白的LeetCode日记记录Day5
19.顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]解法:首先考虑空值,当数组为空返回null。准备一个输出数组,设定好左、上、右、下四个边界开始循环遍历,遍历的过程分为三步,第一步是根据边界条件遍历,第二步是当遍历完边界收缩,第三部确认是否打印完毕,确认打印完毕后输出数组class Solution { public int[]
2021-01-02 23:52:39
103
原创 小白的LeetCode日记记录Day4
16.二叉树的镜像请完成一个函数,输入一个二叉树,该函数输出它的镜像。解法:利用栈来解决。首先判断根节点是否为空(为空直接返回空)然后创建一个栈把根节点先放进去。当栈不为空时,弹出节点然后将它的左节点和右节点放入栈中,之后交换左右节点,这样当第二次循环时,会先弹出右节点并且交换他的左右子节点,之后弹出左节点交换它的左右子节点。重复该过程直到没有节点。/** * Definition for a binary tree node. * public class TreeNode { * i
2021-01-01 22:20:34
200
1
原创 小白的LeetCode日记记录Day3
11.删除链表的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。解法:首先考虑特殊情况,如果头结点为要删除的值就直接返回头结点下一个节点。否则创建两个指针,pre和cur,pre代表当前节点的上一个节点,cur代表当前节点。之后运用循环找到该节点,删除该节点pre.next = cur.next最后返回头结点/** * Definition for singly-linked list. * public class ListNode {
2020-12-31 12:40:24
154
原创 小白的LeetCode日记记录Day2
6.斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。解法一:递归。教科书级解法ε=(´ο`*)))但是在递归的过程中会产生很多重复的数,这
2020-12-30 11:07:22
147
原创 小白的LeetCode日记记录Day1(持续更新ing
1. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。解法一:利用HashSet元素不可重复的性质。遍历数组当元素有重复,覆盖该元素并用一个变量储存它,之后返回该变量class Solution { public int findRepeatNumber(int[] nums) { Set<Int
2020-12-29 19:08:34
224
2
原创 小白的算法基础记录:常用的排序实现
排序方法是日常业务中常用的数据操作,我们常用的排序方法有选择排序、冒泡排序、快速排序等,我在这用Java记录一下这三种方法的实现:ps.这三者都用数组实现选择排序:复杂度O(n^2)遍历整个数组,第一个与后面的数作比较,比他小的就交换到前面来,之后从第二个数开始重复上一步操作直到遍历数组完public class sortSelect { public static void main(String[] args) { int a[]=new int[5];
2020-11-26 19:28:43
105
转载 SpringMVC的工作流程
1.用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载springmvc.xml配置文件。2.前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在springmvc.xml中配置的或者注解的url与对应的处理类找到并进行存储,用map<url,handler>这样的方式来.
2020-11-23 00:47:28
108
原创 小白笔记4:记录一个奇怪的BUG——URL编码%27
今天在写代码时,遇到了一个奇怪的Bug。当我点击图片跳转第4、5次时,页面显示找不到,错误代码404再看URL栏发现居然多了个%27??我知道这里很明显就是路径出了问题,但是始终找不到bug。经过百度后了解,Js会将URL中的‘解码为”%27“,在这里语句<a class="productItemDescLink" href="'product?pid='+p.id">被解析成了product?pid%27+p.id,难怪找不到路径解决办法:在群里大佬的指点下,发现在Vue中的a
2020-11-12 00:58:09
3539
原创 小白笔记3:@RestController返回Json数据遇到的问题及解决办法
在做项目时,在RestController注解下的控制器出现了异常,提示栈溢出。经过排查,发现是两个对象有相互包含关系且一对多。Order类private int id;private List<OrderItem> orderitems;OrderItem类private int id;private Order order;出现原因当控制器开始被调用,Spring MVC的Restful注解把order对象转换为Json格式的同时会把对应的orderitems转换
2020-11-11 11:26:11
2116
原创 小白笔记2:当提交Git时出现Everything is up-to-date原因
今天在Git Push时IDEA右下角出现Everything is up-to-date的提示,在网上查了下,原因可能如下:(1)忘记git->add(2)忘记git->commit(3)创建的目录为空,目录下面如果没有文件的话也会出现以下问题...
2020-11-11 10:32:05
4341
原创 小白级理解:axios异步调用——简介与常见使用
前言在用Vue渲染网页时,我发现Vue官方更推荐使用Axios替代vue-resource来进行异步调用,在经过查阅资料后我对Axios有了更深一步的理解一、Axios是什么?Axios是目前前端最流行的 ajax 请求库,是Vue官方都推荐使用的一种发送ajax请求的方法。在了解Axios之前,我们应该知道ajax是什么。二、Ajax是什么?2.1 Ajax定义Ajax(A synchronous JavaScript And XML)是一种交互式网页的网页开发技术,我们通过它来实现异步刷新
2020-11-04 20:10:34
3626
原创 SpringBoot JPA:JPARepository的增删改(简单理解)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、JPA是什么二、JPA的CRUD1.JPA的添加与修改总结前言当在SpringBoot中使用JPA时,我们通常作以下几个步骤:在resources目录下的application.properties里新增对数据库的链接的必要参数(数据库账号、密码、驱动以及url等等)在配置文件Pom.xml中增加对数据库和JPA的依赖为业务领域的实体类提供注解(如@Entity)在DAO层定义一个与自己业务相关
2020-09-29 10:14:01
4885
原创 小白笔记1:在IDEA部署Tomcat时遇到的问题
404:可能是因为未将应用部署到Tomcat解决办法:1.导入项目后 菜单-> File -> Project Structure -> Artifacts -> 加号 -> Web Application Exploded -> from Module -> j2ee -> ok -> ok2.右上角add configuration,配置好tomcat后Edit configuration->Deployment->加号->
2020-09-10 14:49:34
155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人