自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 问答 (1)
  • 收藏
  • 关注

原创 刷题日记 day 10

写在前面​ 李奶奶的动态规划!!!真的觉得自己智商过低,不适合刷动态规划。于是我找了一个稍微简单一点的链表问题,题目来自于:LeetCode 143. 重排链表,这个题目的解法思路很多,我也想出来几种。但由于我对链表结构的不够熟悉,不能完美的利用链表结构特点,只能理解别人写的题解。题解的思路也很好理解:找到链表的中点分割链表将分割后的后半部分进行链表反转将翻转后的链表和前半部分进行合并题目的背景如下: 给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … →

2021-08-27 20:09:33 104

原创 刷题日记 day 9

初识完全背包​ 完全背包是背包问题的变形之一,老实说01背包我也才半知半解,今天看题解也还是雾中看花。完全背包就是背包只有一个,但是物品可以重复放入无数次。即每种物品有无数件。​ 首先我们列出01背包的核心代码:for(int i=0;i<weight.length;i++){//遍历物品 for(int j=bagWeight;j>=weight[i];j--){//遍历背包容量 dp[j]=Math.max(dp[j],dp[j-weight[i]]+val

2021-08-25 10:26:34 105

原创 刷题日记 day 8

初探01背包问题​ 记得我第一次遇到01背包还是上学期,在算法课上听过老师讲动态规划和回溯的时候,当时觉得这个问题理解起来这么简单,为啥这么重要?当我开始想着写出它的代码。呵呵,一个菜鸡怎么可能会写代码呢。今天终于刷到了01背包问题,发现这个问题的原型是很简单不错,但是它的变形就不是那么容易看穿了。​ 一切的动态规划最重要的就是找递推关系式,在这个问题中。我们的动规数组dp[j],的含义是啥呢?它表示:容量为j的背包所能容纳的最大的物品价值。它的递推公式是: **dp[j]=Math.m

2021-08-23 11:07:10 108

原创 刷题日记 day 7

何为动态规划​ 动态规划就是Dynamic Programming,简称DP。如果解决一个问题需要解决它的很多重叠子问题,这个时候就需要用到动态规划。​ 动态规划的解题步骤:确定dp数组以及下标的含义确定递推公式dp数组的初始化确定遍历顺序举例推导dp数组题目背景今天写的第一题是我们的老熟题:509. 斐波那契数 。这个题目之前用的是递归,今天是动态规划。今天的第二题就有点难理解了:746. 使用最小花费爬楼梯。代码如下斐波那契数class Solution {

2021-08-21 10:20:55 88

原创 刷题日记 day 4

题目背景介绍今天写的是回溯算法解决的n皇后,在LeetCode上是第51题,难度是困难!n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。首先来看一下皇后们的约束条件:不能同行不能同列不能同斜线唉,是个在二维数组上的回溯,这可咋整呢?代码实现class Soluti

2021-08-20 19:29:20 91

原创 刷题日记 day 6

写在前面这两天被贪心折磨,贪心真的很难想到,初看题目有点看不懂,好不容易推演了两个测试,明白了题目的用意,但还是无从下手。一看题解代码和分析,就感觉自己是个傻zi。今天写了两个贪心的题目,738. 单调递增的数字以及714. 买卖股票的最佳时机含手续费,这两题的代码都很简单,但都非常难想到。代码如下单调递增的数字class Solution { //解法一:暴力解法 很容易想到但是会超时 public int monotoneIncreasingDigits(int n)

2021-08-20 19:24:46 98

原创 刷题日记 day 5

初探贪心算法​ 终于结束了回溯,老实说回溯是真的有点难,虽然有模板,但是很多问题的解决方式不尽相同。刷了也有20道题差不多,但是真正有印象的就几题。不过现在学到贪心了,我有点难受。它没有模板,就一个局部最优的算法思想。但是解决问题想到了这个思想,真的非常简单。想不到就呵呵了。两个题目下面是我今天被贪心折磨的日常:LeetCode第53题 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [

2021-08-17 16:57:53 144

原创 刷题日记day 3

题目概述LeetCode第46题:全排列给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]提示:1 <= nums.length <= 6-10 &lt

2021-08-15 13:42:42 101

原创 刷题日记day 2

写在前面好久没写博客了,虽然我的博客没人看,但是我觉得写博客是为了将自己的知识水平提高。写博客还可以让以后回顾知识变得更简单。之前一直没写主要是没啥兴趣,刷题在刚开始简直折磨,不夸张的说开始每一道题都是看答案的,有的看了答案也没弄懂,简直不知所云。对Java的集合类和数据结构也不是很熟悉,很多常用的方法函数不知道。经过20天左右的时间,我基本对刷题有一点的感觉了,开始越刷越快了。这个时候我想要慢下来,慢慢把刷的题总结一下。这就是再次写博客的理由。题目概述及解法今天刷的还是回溯算法系列,这一题是:Lee

2021-08-14 15:48:31 143

原创 刷题日记 Day01

34. 在排序数组中查找元素的第一个和最后一个位置题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。主要思路仔细一看这就是二分查找的应用典型呀,虽然我知道要用二分查找,但是在做的时候还是没有一个明确的思路,搞了一晚上还是没能攻破,诶,看了题解以后就感觉好简单。分析一下我下面写的代码,防止以后再看的时候就看不懂了。这个Solution包括三个函数,第一个就是主函

2021-07-21 10:15:48 80

原创 #学习以及成为想要成为的人day20

写在前面散列函数学完,这个学期的数据结构就只剩下最后的排序算法了。当初学hash表觉得这东西好高级,时间复杂度度只有O(1),当时的啥哈希函数也把我搞得有点混了,所以就一直没去认真看,现在看来全是纸老虎,就是函数f(x)和x的函数关系,真的很简单,用字典来称呼确实也很贴切。代码如下/*C语言实现hashtable的基本操作*/#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#incl

2021-06-30 17:59:18 54

原创 学习以及成为想要成为的人day19

写在前面真是惭愧呀,又双㕛叕鸽了好几天了,这段时间把查找基本看完了,比较基础的二叉排序树呀,平衡二叉树呀,哈斯表呀,都了解得差不多,这次实现的是平衡二叉树这种数据结构,说老实话,真的挺麻烦的。上次的那个二叉排序树在构建的过程中可能让树的结构不好,导致查找的效率不高。所以整了个平衡调整方法,就是加了一个平衡因子,每个结点的平衡因子的绝对值不能大于1,这样就使得树的结构始终很好,但是真正调整的时候还是很麻烦,基本上有四种不平衡的状态,分为四个类型,这个在书上都可以找到。理解了之后我突然觉得用代码实现确实不容易

2021-06-26 21:26:48 58

原创 # 学习以及成为想要成为的人day18

排序算法之二叉排序树写在前面​ 这个学期本是想着好好把数据结构过一遍,以为看完了就基本可以刷LeetCode,唉,后来发现自己的进度太慢了,现在学的一知半解,在树和图那两节的基本数据结构和算法都没有亲自实现,虽然大体内容都看懂了,但是自己实际写代码确实头疼,暂时就先把后面比较容易实现的算法先写完。​ 这次实现的数据结构是二叉排序树,是非常常用的数据结构了。查找这一章比较重要的就是二分查找了,二分查找的算法函数替我也写过,如下:#include<stdio.h>#include&lt

2021-06-19 15:16:19 56

原创 2021-06-12# 学习以及成为想要成为的人day17

整数反转写在前面不知过了多久又开始写博客了,这段时间一直没有动力,java基础的基本学完了,这倒是让我稍微欣慰的的事情。但是我的编程能力还是很差,最近才开始认真做一些题,写完一题就记录一下,数据结构也要学起来。代码C语言版本int reverse(int x){ int res=0; while(x!=0){ int tmp=x%10; if(res>(pow(2,31)-1)/10||res==(pow(2,31)-1)/10&&tmp>7) r

2021-06-12 19:20:29 1092 1

原创 学习以及成为想要成为的人DAY 16

进程调度算法JAVA实现写在前面又休息了好几天,其实也不是没有啥好记录的,主要是嫌麻烦,这段时间好像对JAVA有了一点点感觉,不知道是不是错觉hhh。调度算法是我们操作系统实验课上的作业,其实网上有很多完美的解决方案,但是我觉得学了一门编程语言就必须要练,看了C语言写的代码,实在有点麻烦,队列、结构体全要自己定义,整个函数冗长(其实太长了,我看不懂),所以我就尝试自己写,结果写了四天… 期间被各种折磨,最后还好写出来了,能交差。代码如下进程PCB类package OS;public class

2021-05-21 22:56:26 59

原创 # 学习以及成为想要成为的人day15

串的基本操作包括BF算法及KMP算法写在前面又过了很长一段时间,今天所幸有点成果了。这一段时间学的东西很杂,当然大部分是自学,关于JAVA的学习到了多线程开始停滞不前了,有了解到一个新的领域:网络安全的ctf大赛,目前对这个也很感兴趣,毕竟谁不想做一个酷帅的黑客呢。数据结构终于把串的基本操作实现了,其实看书的话,早就看到了二叉树。这个就不多赘述了。看代码吧!!!代码实现/*C语言实现串的基本操作包括BF算法和KMP算法*/#include<stdio.h>#include&lt

2021-05-12 23:06:22 115 2

原创 学习以及成为想要成为的人day12

输出链表倒数第k个节点解决思路一般来说,我们开始想到的解决办法就是遍历链表两次,第一次找到一共有几个元素,记为n,第二次用一个指针一直指到n-k+1这个位置,这个位置就是倒第k个节点的所在地。 说实话,这就是我开始想到的,还以为自己终于脑子灵光了一次,没想到这其实是最low的解法。哈哈哈其实只要能解决问题,这种暴力法也有可取之处的。当然今天大费口舌肯定不止介绍这一种解法。比较妙的思路就是快慢指针,定义两个指针,一个先从头结点遍历,当走到k-1的位置处,这时我们让第二个指针从头节点开始遍历,这样两个指针

2021-05-08 22:18:53 77 2

原创 学习以及成为想要成为的人day14

C语言实现队列的各种操作写在前面又鸽了好几天,哈哈哈这也是没办法的事呀。毕竟自己的学习效率并不算高。其实这些都在疫情期间学过,再学一遍也有点印象,远不比这样慢慢吞吞,本应冲他个一往无前,不求甚解。但我也明白算法的学习基础必须打牢,如果连基础的数据结构都没有搞明白,后面的那些深奥的算法就更无从谈起。还是一步一个脚印,慢慢来。代码如下/*C语言实现循环队列和链式队列的各种操作*/#include<stdio.h>#include<stdlib.h>#include&lt

2021-05-05 20:48:30 55

原创 学习以及成为想要成为的人day11

线性表的简单应用这两天一直在看书上的基于线性表结构设计的简单算法:有序线性表的合并,说老实话,只要看懂了算法,用某一种编程语言去实现并不难,难的是真正理解这一算法,并在以后的实践中能够灵活运用。代码如下:顺序表实现的:#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef int ElemType;#define MAXSIZE 100#define OK 0#define E

2021-04-24 13:23:17 144

原创 学习以及成为想要成为的人day10

单链表怎么说呢,顺序表还是太low了,哈哈哈开玩笑开玩笑。链表加入一个指针域就发生了很惊奇的变化,使插入、删除的操作变得更加简单。当然指针有着两面性,我们试用的时候感觉很好,指来指去、指指点点,非常灵活,但是编译的时候莫名其妙的错误会让你感到彻底疯狂。代码如下:/**C语言实现链表的各种操作*/#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef int ElemType;typed

2021-04-20 23:15:01 56

原创 学习以及成为想要成为的人day9

前面没写博客的时候在干什么?​ 哈哈哈,好久没写博客了。大部分原因是太忙了,是呀,都过了这学期的第五周了,什么实验课、选修课、课堂作业什么的都一股脑地冲向我。当然也和我之前天天下午打篮球有关,上午睡懒觉,下午就打篮球,晚上随便搞搞就睡了,所以就算记得学习,也没有写博客的冲动。现在爷回来了!!!关于数据结构数据结构真的很重要!!!​ 学的越后就会发现数据结构是非常有用的,很多时候并不是不能理解算法的实现过程,而是不能够用已学的知识去完成它,而数据结构和算法密不可分。所以我打算

2021-04-18 12:15:44 51

原创 学习以及成为想要成为的人day8

埃拉托色尼算法的实现不知道你们是否在初学C语言的时候,遇到过这个看似简单的问题: 怎么找到一个范围内的所有素数?一般的解决问题的办法就是利用两个for循环,一个个的除。这样的算法很简单,也确实很符合我们平时的思维方式,但是这样的算法并不是最好的,对内存浪费很大。今天我看到了一种更好的算法:埃拉托色尼筛选法。算法核心这个算法的核心在于:一个素数的倍数一定不是素数实现的代码#include <stdio.h>#include <stdlib.h>#include <

2021-03-22 19:07:39 55

原创 学习以及成为想要成为的人day7

C语言指针​ 今天被一个C语言题目搞得头都大了,题目的要求是让输入10个整数,并改变顺序,使10个整数中最大的数与最后一个数交换位置,同时让其中最小的数和第一个数交换位置。看似很简单,其实确实很简单,可惜我太愚蠢了。这个问题还是有一点东西的。首先就是找到最大的数和最小的数,这个问题很明显要用到数组来存储整数,那么就需要返回最大数和最小数的数组下标第二个就是交换的顺序问题,这是一个可以分类讨论的问题,综合可以分为四种情况。试想存在这样顺序的一个整数序列:10 9 8 7 6 5

2021-03-17 23:09:33 58

原创 学习以及成为想要成为的人day6

文章目录Java学习之路——稀疏数组何为稀疏数组?代码组成完成后分析Java学习之路——稀疏数组何为稀疏数组?当一个数组中大部分的元素为0,或为同一个值的数组时,可以使用稀疏数组来保存该数组,一般在构建棋盘迷宫会用到。我在b站视频中学习到这种数据结构,感觉很新奇,所以记录下来。代码组成public class Array5 { public static void main(String[] args) { //创建一个二维数组 11*11 int[][

2021-03-15 19:44:02 57

原创 学习以及成为想要成为的人day5

学习以及成为想要成为的人day5Java学习之路​ 今天学到了java中的方法,这个概念类似于C语言中的函数。创建一个方法和使用方法都让我感到新奇,老实说利用方法可以使代码总体变得规划有度,阅读性更强。以下是我今天使用方法写的极其简易的计算器,hhh,说是计算器但是却不能进行混合运算。只能通过分支选择需要的运算方法,但是数据可以大量的运算。一共加减乘除四种方法。​ 代码如下:import java.util.Scanner;public class Method5 { p

2021-03-14 23:10:56 71 1

原创 学习以及成为想要成为的人day4

学习成为想要成为的人day4java开发环境的安装今天是星期四,这个学期的每个星期四都没有课。对我而言,这是好事,也是坏事。浑浑噩噩的我在开学一个星期后终于找到了学习的动力和目标,今天开始重拾java,老实说 这条路不是那么简单,按着b站上up主细心的指导,以及图书馆的校园网的倾力加持下,我失败了!笑着笑着就哭了,唉,主要的过程我已经实现了,就是有一个小问题,我通过CSDN了解到jdk1.8以后的版本和之前的变化了好多,之后就在一个设置环境变量path上面碰头了,javac既不是内部命令,也不是啥玩意来

2021-03-11 16:23:12 54

原创 studyday2

学习以及成为想要成为的人day2寒假c语言学习函数汉诺塔问题初次探究今天又看了一下汉诺塔问题,试图将它弄明白,但是递归这个东西感觉不太好懂,所以我决定不急着消化它,每天都弄明白一点点。汉诺塔的代码通过书上指导,已经上机调试过,代码如下:#include <stdio.h>#include <stdlib.h>#include<math.h>int main()//汉诺塔问题用递归方法来解决{ void hanoi(int n,char one,

2021-02-04 17:28:10 151 2

原创 study day1

学习以及成为想要成为的人的day1今日学习成果通过B站上kuangshen study学会了如何下载Typora的使用并以此作为自己博客的第一次尝试!下定决心让每天写博客(日记)hhh,来让自己保持对学习的热情!加油加油加油!Markdown的学习标题:通过 #+标题内容 使标题分级 几个#就是几级标题字体: 宇宙最帅追风少年 两边都加一个* 就可以使字体倾斜​ 宇宙最帅追风少年 两边都加两个* 就可以使字体加粗​

2021-02-03 21:26:28 232 5

原创 2020-12-30

原来可以写博客

2020-12-30 21:04:11 65

空空如也

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

TA关注的人

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