![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
张小璇flying
在努力学习JAVA,希望一年以后自己能独立做个项目,找到实习工作,迎难而上,加油!
展开
-
快乐数:最后值变为1or进入圈中继续循环
题目:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true ;不是,则返回 false 。题目链接:力扣思路:题目关键是发现快乐数变化规律,题目告诉了两种情况不可能无限变大,因为都是数的每一位的平方,比不上一个最高位的值大1)将该数替换成每个.原创 2022-02-16 15:37:16 · 197 阅读 · 0 评论 -
HashSet:提取两个数组的重复的值
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。题目:力扣基础:集合基本函数和属性class Solution { //利用set的不可重复性 public int[] intersection(int[] nums1, int[] nums2) { if(nums1 == null || nums1.length == 0 || nums2 == nu原创 2022-02-15 20:17:33 · 503 阅读 · 1 评论 -
数组充当hash表:查找共用字符
给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符),并以数组形式返回。你可以按 任意顺序 返回答案。题目链接:力扣基础:遍历字符串数组for(char c : words[i].toCharArray()){ temp[c - 'a']++; }class Solution { public List<String> commonChars(String[] words) {原创 2022-02-15 19:48:32 · 147 阅读 · 0 评论 -
赎金信:数组哈希
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。一定先把题给捋顺了,再写代码题目链接:力扣class Solution { //注意读清楚题意,弄明白每个变量的含义; public boolean canConstruct(String ransomNote, S原创 2022-02-15 19:04:11 · 65 阅读 · 0 评论 -
数组类型的哈希映射
题目:242.有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。题目链接力扣基础:字符串长度比较:str.length();length是一个方法,要加括号;但是数组的length是属性,数组长度是arr.length;获得字符串索引位置的字符对应的ASC码:str.charAt(i);数组的初始化值是0,当数组类型是数值型时;思路:原创 2022-02-15 18:24:46 · 155 阅读 · 0 评论 -
寻找链表的相交点:快慢指针数学分析
题目描述:力扣给定一个链表的头节点 head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。分析过程:力扣当fast和slow相遇时: fast...原创 2022-02-15 12:19:29 · 538 阅读 · 0 评论 -
寻找链表相交节点(相交引用地址相同)
面试题 02.07. 链表相交给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。思路:链表相交情况:两个指针同时走两个链表a指针先走第一个链表 AC+CD,b指针先走第二个链表BC+CD;若两个链表相交,两个指针会同时走到c点,此时a指针的路径AC+CD+BC=b指针的路径BC+CD+AC;若两个指针不相交,两个指针同时走完两个链表,最后值指针值都是null; ...原创 2022-02-15 10:57:59 · 338 阅读 · 0 评论 -
快慢指针:删除链表的倒数第n个结点
19.给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。快指针先走n步,之后快慢指针一起走;快指针走到null,慢指针正好到第n个节点的前驱节点快指针指向第一个节点,慢指针指向虚拟节点(方便指到前驱节点)/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * Li..原创 2022-02-13 21:16:22 · 193 阅读 · 0 评论 -
回文链表,数组
234.给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode...原创 2022-02-12 21:06:44 · 151 阅读 · 0 评论 -
三句话弄懂:反转部分链表
92:给你单链表的头指针 head 和两个整数left 和 right ,其中left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。收获:反转链表的穿针引线1)定义next指针2)将next指针后的链表与cur相连3)将next节点插入pre和pre.next之间。/** * Definition for singly-linked list. * public class ListNode { * ..原创 2022-02-12 19:27:39 · 389 阅读 · 0 评论 -
链表的增删改查
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性prev以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第index个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为val的节点。插入后,新节点将成为链表的...原创 2022-02-12 10:57:38 · 1096 阅读 · 0 评论 -
反转链表:双指针法
给你单链表的头节点head,请你反转链表,并返回反转后的链表。指针:快慢指针pre指向前一个节点,cur指向当前节点,temp用于保存当前节点的下一个节点/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = va..原创 2022-02-12 10:50:05 · 235 阅读 · 0 评论 -
虚拟节点删除确定值的节点
收获:遍历整个链表判断条件是:cur.next!=null;链表遍历,中间指针的cur当前节点,当前节点变化的条件是,当前节点的next值不为val;/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; }原创 2022-02-11 18:24:42 · 430 阅读 · 0 评论 -
旋转矩阵边界问题
基础:list接口:List list = new ArrayList();方法:add;remove;收获:1.矩阵边界问题,关键是什么时候跳出循环测试代码:想用正方形,发现无法遍历中间的横杠和竖杠,这样的边界不能明确class Solution { public List<Integer> spiralOrder(int[][] matrix) { int loop =0; int startx = 0; ..原创 2022-02-09 19:58:32 · 364 阅读 · 0 评论 -
打印旋转矩阵
给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix。思路:题目重点:各个未知量的设定,遍历边界的确定;确定正方形每次遍历的对角坐标,起始坐标,最后的坐标正方形的对角坐标由偏移量所确定,start+(n-offset);收获:旋转矩阵,左闭右开,在行或列的末尾开始一条新的矩阵;这里每一种颜色,代表一条边,我们遍历的长度,可以看出每一个拐角处的处理规则,拐角处让给新的一条边来继续画。https:...原创 2022-02-09 12:43:25 · 514 阅读 · 0 评论 -
数组:滑动窗口,指针
给定一个含有n个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 收获:再看到题解思路之后,自己手动写了一遍,写的时候用if循环实现窗口移动,发现此时窗口的左边界不能移动,考虑到要使用while循环,但没理...原创 2022-02-08 21:40:24 · 1560 阅读 · 0 评论 -
977:有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。基础:数组定义:int[] tes= {-3,-1,1,9}; 不是方括号在方法调用时不可以这样:sortedSquares({-3,-1,1,9});是要传入一个引用地址的数组思路:想使用冒泡排序一类的排序算法,发现自己不会排,扎心了,实践出真知呀!此题本身数组是有序的,不用考虑冒泡排序收获:此题还是涉及双指针,从我做的三个题来总结,好像数组涉及 区间、指针原创 2022-02-08 17:41:52 · 300 阅读 · 0 评论 -
数组:移除元素,快慢指针,数组覆盖
数组原创 2022-02-08 12:48:11 · 721 阅读 · 0 评论 -
数组刷题总结:二分法
704:二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。方法一:数组查找我暴力查找的,错误点:for语句规则;return 返回值(在for中写了两个if判断)程序最后没有把不满足条件的值返回方法二:二分法思考:做题之前:因为是有序数组,想直接通过for or while 写循环,写循环条件的时候,发现没法往左和右递归。题解后,原来是看二分法的中间原创 2022-02-08 10:48:19 · 570 阅读 · 0 评论 -
error:could not open jvm.cfg
第一次写博客,记录我java之旅一、为什么产生这个问题我是看的尚硅谷的视频进行java安装的,在安装jbk的过程一定要注意记住安装路径,不要随意更改目录名。因为在注册表中,已经登记好了你的注册数据。若更改路径,cmd运行都会报错,会显示出你在安装程序的默认路径。例如:error:could not open"F:\JAVA\soft.jdk.1.8.0/bin… jvm.cfg"二、解决问题首先,Windows+R输入regedit找到注册编辑器中HKEY_LOCAL_MACHINE/softwa原创 2020-12-01 10:49:23 · 2674 阅读 · 1 评论