自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Vigor】leetcode刷题 -- 347. 前 K 个高频元素(java)

题目:题意理解:依据题意,可知是给定一个数组,且给定一个数值 k ,要求数组中重复元素最多的前 k 个元素。解题思路:最开始的想法很粗暴:遍历数组,且创建一个map集合,键来存储数组元素,值则存储对应键出现的频率。最后通过每遍历一次map集合来求出一个中中最大值,同时删去该键。这种想法确实简单粗暴,但是这样的做法因为多次遍历map集合来取得最大值,他的算法时间复杂度肯定远大于 n*n 。而且看了看后面的提示:**你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。**

2021-03-10 15:31:36 219

原创 【Java编程思想】第2章 --- 一切都是对象(1)【Vigor】

用引用操纵对象:每种编程语言都有自己操纵内存中元素的方式,我们可能经常听过这么一句话“Java中一切皆对象” ,所以,我们会认为是对象操纵这内存中的元素,而实际Java中操纵的标识符是对象的一个“引用”。这么说可能有些抽象,我们可以想象这么一个情况,我们拥有一个电视机(对象),而要来操控这个电视机,我们需要一个遥控器(引用)。而只要我们手握这个遥控器,就可以保持与电视机的连接,无论我们走到房间哪里,我们几乎都能操控到电视机(这可以想象到当我们在类中创建了一个对象的时候,我们可以利用创建的这个对象

2021-03-06 22:10:21 183

原创 【Vigor】leetcode刷题 -- 剑指 Offer 59 - I. 滑动窗口的最大值(java)【暴力解法】

题目:题意理解:依据题意,假设有一个窗口,这个窗口中包含 k 个元素,在从左往右逐一遍历这组数据的同时,你需要分别求出这个窗口中 k 个元素中的最大值。解题思路:根据题目要求,我们可以设定一个可存 k 个元素的数组 slide ,用来存储窗口元素,通过每一次求出每个窗口中元素的最大值,且每一次改变窗口中元素的各个值,即可达到这个目的。代码:public int[] maxSlidingWindow(int[] nums, int k) { int[] slide = new i

2021-03-06 20:18:20 164

原创 【Vigor】leetcode刷题 -- 739. 每日温度(java)

题目:题意理解:依据题意,需要查找到下一个温度更高的日子距当前有多少天比如有三天温度:73 56 74 ,则距 73 后 74 比其温度更高,而 73 之后需要等待 2 天才到 74 ,所以 73 对应的数组值为 2 .解题思路:我们可以遍历一遍所给的温度数组,因为遍历过的元素可能对后面的元素产生影响,所以可以考虑使用 栈 这种数据结构进行解题。在遍历的过程中,我们存储在栈中的值为该元素的数组下标。当当前元素比栈顶元素大,则证明找到了至少一个温度升高的“迹象”,则将栈顶元素取

2021-03-05 18:40:46 330

原创 【Vigor】leetcode刷题 -- 242.有效的字母异位词(java)

题目:题意理解:异位词:长度一样,包含的字母都一样,每个字符出现的频率也一样,只是顺序不同,即称异位词。说明中说假设字符中只含小学字母:不用考虑字母的大小写问题和其他字符。解题思路:因为只含小写字母,而小写字母只有26个,所以可以创建一个长度为26的数组,通过遍历字符串来记录遇到的字母次数。遍历第一个字符串,将遍历到的字符的对应位置上+1,如遇到 a 字符,则 arr[0]++,遇到 b 字符,则arr[1]++…遍历第二个字符串,相反的,将遍历到的字符的对应位置上-1,如遇到 a 字符

2021-03-04 13:16:36 233 1

原创 What Is Your Grade? HDU Java实现

解题思路:这道题有一个注意事项:*(you can get the former(前者) only when your rank is in the first half of all students who solve 4 problems).意思是:例:这个答对4个问题的学生必须是占全部答对4个问题的学生的一半及一半以上,才是95,其他都是90分*1.创建两个数组,一个记录解决了(1,2,3,4)个问题的学生个数;一个为后期便于计算这个同学是得(95或者90)分;2.创建一个学生类:定义成员

2020-07-22 19:17:41 137

原创 开门人和关门人1234 HDU java

Java思路:创建三个数组:for循环:out(记录每个人出门时间)in(记录每个人进门时间)id(记录每个人的身份)每次输入进门和出门时间,都运用GetTime自定义函数把时间转换为毫秒值。对 in数组 out数组 分别进行查找,用getOpen找出最早的时间,返回该时间的id ; 用getClose找出最晚时间,返回该时间的id最后输出最早的id和最晚的id这道题解决的问题:1.如何将格式化的时间进行比较:运用SimpleFormat转化为毫秒值2.找出最早和最晚的时间如何和这个人的

2020-07-21 12:27:19 202

原创 10大基本算法

1.求值法基本是三个步骤:输入-计算-输出2.递推法根据1-n的规律 求解第n个3.递归法将大问题缩小为小问题,按照某种形式,使大小问题都符合这种求解方法。最终由小问题的求解推出大问题的求解4.枚举法在一定区域内枚举出符合问题的全部解5.模拟法根据实际问题变换成计算问题6.分治法将问题拆分成若干个小问题,最后将小问题合并求出大问题的解7.贪心法在单一阶段中,由局部最优最后求出全局最优8.回溯法在有多选择的情况下,试探走每一步,不适合则退回9.构造法构造模型(图形、方程组、函数式)解决问题1

2020-06-29 10:16:34 577

原创 指针的基础知识

这里是关于指针的一些基础知识(侧重于代码实现)1.指针的声明:必须有初始化 :int f = 1;int *p = &f;如果没有初始化指针,那这个指针就是个野指针,而如果对这个野指针这样操作:*int p = 5 这是一个很危险的行为,因为指针本身就是代表一个地址 ,而如果你对系统的地址随意赋值,就有很小机率地导致系统运行出错;但当然,我们电脑的系统并不会如此脆弱,大多如此的操...

2020-04-16 22:27:44 342

原创 动态规划解决斐波那契数列问题

显然使用的递归方法解决斐波那契数列问题,效率并不高,运用递归方法时间复杂度和空间复杂度是很大的。接下来我会把我学习到的一种效率较高并且其空间复杂度较小的方法介绍一波:动态规划:由底向顶逐步迭代求得斐波那契数列的第n项传统的解决方法是运用公式:F(n-1)+ F(n+1);而这种方法是运用g,f 两个变量分别的的迭代变换,即:g = g + f ;f = g - f ;例:g = 1; ...

2020-04-15 13:58:08 1087

空空如也

空空如也

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

TA关注的人

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