- 博客(169)
- 收藏
- 关注
原创 String、StringBuffer、StringBuilder
简单叙述String的部分api以及String、StringBuffer、StringBuilder的异同
2022-06-04 15:04:26
61
原创 面试题 02.05. 链表求和
给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912思路:循环将每一位的和加起来。代码:/** * Definition for singly-linked list. * public class ListNode {
2022-03-01 10:43:14
114
原创 746. 使用最小花费爬楼梯
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/min-cost-climbing-stairs著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。输入:cost = [10,1
2022-02-23 09:39:47
119
原创 剑指 Offer II 088. 爬楼梯的最少成本
数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当爬上一个阶梯都要花费对应的体力值,一旦支付了相应的体力值,就可以选择向上爬一个阶梯或者爬两个阶梯。请找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/GzCJIP著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。输入
2022-02-23 09:36:40
104
转载 714. 买卖股票的时机含手续费
给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-
2022-02-22 10:12:03
51
原创 309. 买卖股票时机含冷冻期
给定一个整数数组prices,其中第prices[i]表示第i天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-c...
2022-02-22 09:56:00
194
原创 122. 买卖股票的时机 II
给定一个数组 prices ,其中 prices[i] 表示股票第 i 天的价格。在每一天,你可能会决定购买和/或出售股票。你在任何时候最多只能持有 一股 股票。你也可以购买它,然后在 同一天 出售。返回 你能获得的 最大 利润。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。输入: pr...
2022-02-22 09:12:54
62
原创 1195. 交替打印字符串
编写一个可以从 1 到 n 输出代表这个数字的字符串的程序,但是:如果这个数字可以被 3 整除,输出 "fizz"。如果这个数字可以被 5 整除,输出"buzz"。如果这个数字可以同时被 3 和 5 整除,输出 "fizzbuzz"。现在请你实现一个有四个线程的多线程版FizzBuzz,同一个FizzBuzz实例会被如下四个线程使用:线程A将调用fizz()来判断是否能被 3 整除,如果可以,则输出fizz。线程B将调用buzz()来判断是否能被 5 整除,如果可以,...
2022-02-21 10:01:01
57
原创 451. 根据字符出现频率排序
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。输入:"tree"输出:"eert"思路:将字符串放入HashMap中,得到每个字符串的频率,在按字符串的频率排序,放入新的字符串中。代码:class Solution { public String frequencySort(String s) { HashMap<Character, Integer> map = new HashMap<Character, Intege
2022-02-21 09:37:27
1161
原创 877. 石子游戏
Alice 和 Bob 用几堆石子在做游戏。一共有偶数堆石子,排成一行;每堆都有 正 整数颗石子,数目为 piles[i]。游戏以谁手中的石子最多来决出胜负。石子的 总数 是 奇数 ,所以没有平局。Alice 和 Bob 轮流进行,Alice 先开始 。 每回合,玩家从行的 开始 或 结束 处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中 石子最多 的玩家 获胜 。假设 Alice 和 Bob 都发挥出最佳水平,当 Alice 赢得比赛时返回true,当 Bob 赢得比赛...
2022-02-18 10:06:13
2852
原创 200. 岛屿数量
给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-of-islands著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。输入:grid = [ ["1","1","1","1","0"], ...
2022-02-17 09:24:04
32
原创 25. K 个一组翻转链表
给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]...
2022-02-16 17:18:17
29
原创 24. 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。输入:head = [1,2,3,4]输出:[2,1,4,3]思路:通过迭代的方式实现链表的两两交换。代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNod
2022-02-16 16:27:43
97
原创 199. 二叉树的右视图
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入:[1,2,3,null,5,null,4]输出:[1,3,4]输入:[1,null,3]输出:[1,3]思路:通过层次遍历,将每层最右边节点的值加入列表中。代码实现:/** * Definition for a binary tree node. * public class TreeNode { * int val; * ...
2022-02-16 09:23:31
182
原创 对象的创建与内存分配
1、对象的创建Java虚拟机遇到一条字节码new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析、初始化过,如果没有则进行类加载。加载完之后为对象进行内存分配。2、内存分配内存分配有两种方式2.1、指针碰撞假设Java堆中内存是绝对规整的,所有被使用过的内存被放在一边,空闲的内存被放在另一边,中间有一个指针作为分界点的指示器。这样分配内存,就是把指针向空闲位置挪动与对象大小相等的距离,这种分配方式叫做指针碰撞。2.2
2022-02-13 12:22:27
484
原创 运行时数据区
运行时数据区包括如下几个区域(灰色为所有线程共享区域)。1、程序计数器通过改变计数器的值来选取下一条需要执行的字节码指令它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能,都需要依赖这个计数器来完成。2、虚拟机栈每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧,用来存储局部变量表、操作数、动态连接、方法出口等信息。一个方法的调用到被执行完的过程,就对应着一个栈帧在虚拟机中从入栈到出栈的过程。3、本地方法栈本地方法栈与虚拟机方法栈作用类似,虚拟机栈为
2022-02-13 11:50:31
371
原创 A+B 输入输出练习VIII
题目描述你的任务是计算若干整数的和。输入输入的第一行为一个整数N,接下来N行每行先输入一个整数M,然后在同一行内输入M个整数。输出对于每组输入,输出M个数的和,每组输出之间输出一个空行。样例输入34 1 2 3 45 1 2 3 4 53 1 2 3样例输出10156思路:此练习在练习Ⅴ的基础上多了一个换行。代码:public class Main { public static void main(String[] .
2022-01-20 20:20:23
668
原创 A+B 输入输出练习VII
题目描述你的任务是计算两个整数的和。输入输入包含若干行,每行输入两个整数a和b,由空格分隔。输出对于每组输入,输出a和b的和,每行输出后接一个空行。样例输入1 510 20样例输出630思路:此问题在练习Ⅰ的基础上加一个换行即可。代码:public class Main { public static void main(String[] args) { Scanner in = new Scanner(Syst
2022-01-20 20:16:09
333
原创 A+B 输入输出练习VI
题目描述你的任务是计算若干整数的和。输入每行的第一个数N,表示本行后面有N个数。输出对于每一行数据需要在相应的行输出和。样例输入4 1 2 3 45 1 2 3 4 5样例输出1015思路:此问题为练习V的简化版本。代码:public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in);
2022-01-20 20:13:40
428
原创 A+B 输入输出练习V
题目描述你的任务是计算若干整数的和。输入输入的第一行是一个正数N,表示后面有N行。每一行的第一个数是M,表示本行后面还有M个数。输出对于每一行数据需要在相应的行输出和。样例输入24 1 2 3 45 1 2 3 4 5样例输出1015思路:此题就是训练Ⅱ与练习Ⅳ的综合。代码:public class Main { public static void main(String[] args) { Scanner i
2022-01-20 20:08:25
210
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人