自定义博客皮肤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)
  • 问答 (1)
  • 收藏
  • 关注

原创 LeetCode——石子游戏 IX

题目: 解题思路: 一开始拿到题目想到思路就是两个人轮流拿石子只要保证每次拿到的石子不会导致已移除的所有石子的值之和能够被整除3即可。这一思路存在的问题就是忽略了最佳,就仅仅是保证了当下这一步自己不会输掉游戏但是并没有考虑对手以及整局游戏的走向。例如当遇到stones = {1, 1, 7, 10, 8, 17, 10, 20, 2, 10}的情况时就会发生错误。按照上面的解题思路,双方选取石子的顺序为:{1,1,8,10,20,10,17,7,2,10}这样就成了Bob胜利,而实际上如果A选择{8,17

2022-01-20 22:39:00 2156

原创 LeetCode——存在重复元素 II

题目: 解题思路:可以创建一个哈希表用来存储数据,把数组中的数字作为hashmap的key把索引作为value。然后我们对数组进行遍历,取到一个数首先判断哈希表中是否存在key相同的键值对,如果不存在那么就直接把这个数存入hashmap中,如果hashmap中存在这个键值对那么就将这个数值的索引取出来然后跟当前的i值做差,如果差值小于等于k那么直接返回true即可,如果大于那么久用num[i],i 这个键值对覆盖hashmap中key为num[i]的键值对。 class Solution { pu

2022-01-19 11:25:02 191

原创 LeetCode——链表随机节点

题目: 解题思路:首先是要实现使用整数数组初始化对象,这里由于我们不知道每次输入的数组长度是多少因此我们可以定义一个链表类型的类的成员变量用链表来存储数据。第二步根据题意我们可以使用random.nextInt方法来随机生成一个[0,list.size())范围内的值,这样我们就可以直接实现随机选择节点并且保证每个节点被选择个概率相等的目的。 class Solution { ListNode head = new ListNode(); ArrayList<ListNode>

2022-01-16 21:44:42 215

原创 LeetCode——二叉树的中序遍历

题目: 解题思路: 对一个二叉树进行中序遍历,本质上就是对二叉树进行深度优先搜索。以上图中的树为例我们取出根节点首先判断其是否有左子树,如果有左子树则对其左子树进行搜索,搜索完左子树访问根节点然后再搜索这一节点的右子树。左子树和右子树的搜索过程与上述相同。 根据解题思路不难发现上述的过程就是一个递归的过程因此我们可以用递归的方式来对其进行求解,代码如下: /** * Definition for a binary tree node. * public class TreeNode { *

2022-01-10 17:45:24 487

原创 LeetCode——完美数

题目: 求解思路: 根据提议来看,我们只要找到这个正整数的全部正因子就好,因此我们可以直接进行枚举,一个数的正因子除了他本身之外其他的因子均小于他的二分之一,因此我们的枚举的终止条件就是枚举的当前值大于次数的二分之一。 class Solution { public boolean checkPerfectNumber(int num) { int result = 0; for(int i=1;i<=num/2;i++){ if(nu

2021-12-31 10:10:02 431

原创 LeetCode——一手顺子

题目: 解题思路: 首先根据题意不难看出要想满足题目的条件数据长度必须要是groupSize的整数倍,否则一定返回false。 下一步我们我们就需要开始考虑数组长度满足要求的情况,经过观察可以发现hand数组是一个无序的数组这也就意味着可能存在第一个数字反倒是最大值的情况也无法判断这个数字就是是在第几组顺子的第几个位置,因此我们可以考虑将数组利用Arrays.sort()方法对其进行排序。 排序后我们就会得到一个升序的序列,那么数组首个数字一定是第一个顺子的第一个数字,然后我们对其后的数字进行遍历当得到一

2021-12-30 14:29:14 2691

原创 Java入门自学笔记(四)——流程控制与数组

流程控制

2021-04-22 20:18:56 146

原创 Java入门自学笔记(三)——数据类型与运算符

文档注释 Java为开发者提供了一种强大的注释形式:“文档注释”,如果我们在编写源代码的过程中添加了文档注释,那么我们就可以使用javadoc来将源代码中的文档注释提取成一个API文档。

2021-04-16 14:54:14 165

原创 Java入门自学笔记(二)——什么是面向对象

什么是面向对象 面向对象三个基本特征是:封装、继承、多态。 面向对象是从现实世界中存在的事物或者对象作为作为出发点来进行软件系统的构造,在程序设计过程中把对象作为中心点来对待,并且根据对象的本质特点将其抽象成类。 面向对象的开发方式是由OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)三者有机组成的。其中OOA和OOD主要是通过UML来完成,最新的UML包括13中图形(常用的包括用例图、类图、组件图、部署图、顺序图、活动图和状态机图)。 与面向对象不同的方法是结构化程序设计,这一方法主要

2021-04-13 10:59:09 94

原创 Java入门自学笔记(一)

前言 Java是一门历经二十多年发展的影响深远的编程语言,Java是一门十分纯粹的面向对象的编程语言,接下来将要从Java SE开始进行Java的系统性学习。 Java简介 Java是程序需要进行先编译后解释两个步骤,这就意味着Java同时具备解释型语言与编译性语言的特征。 Java语言的一个显著特性是其跨平台性,而高级语言在编译过程中往往需要一个特定的编译器,这种编译器往往会将高级语言的源代码一次性“翻译”成可以被该操作系统下的硬件所执行的机器码 ...

2021-04-12 16:16:20 90 2

空空如也

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

TA关注的人

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