![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
yaCoding
科技改变生活,IT成就未来
展开
-
028. 展平多级双向链表
剑指 Offer II 028. 展平多级双向链表class Solution { public Node flatten(Node head) { dfs(head); return head; } public Node dfs(Node node) { Node cur = node; // 记录链表的最后一个节点 Node last = null; while (cur !=原创 2022-01-26 22:02:38 · 290 阅读 · 0 评论 -
《LeetCode零基础指南》(第四讲) 一维数组
1.33. 搜索旋转排序数组2.81. 搜索旋转排序数组 II3.153. 寻找旋转排序数组中的最小值4.70. 爬楼梯5.509. 斐波那契数6.1137. 第 N 个泰波那契数原创 2021-12-03 20:57:03 · 154 阅读 · 0 评论 -
排序入门 - 选择排序
1.769. 最多能完成排序的块数组arr是[0, 1, …, arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?/*数组arr是[0, 1, ..., arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同*/class Solution { public in原创 2021-12-02 21:51:07 · 97 阅读 · 0 评论 -
《LeetCode零基础指南》(第九讲) 二级指针
1.832. 翻转图像class Solution { public int[][] flipAndInvertImage(int[][] image) { for(int i = 0; i < image.length; i++){ int n = image[i].length - 1; for(int j = 0; j <= n; j++,n--){ if(image[i][j] != ima原创 2021-11-30 12:44:27 · 60 阅读 · 0 评论 -
《LeetCode零基础指南》(第八讲) 二维数组
1.1351. 统计有序矩阵中的负数/**给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 请你统计并返回 grid 中负数的数目。 */class Solution {//二分法 public int countNegatives(int[][] grid) { int count = 0; for(int i = 0; i < grid.length; i++){ int left =原创 2021-11-29 11:20:30 · 445 阅读 · 0 评论 -
字符串算法(六) - 回文串
1.125. 验证回文串/*1.给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。2.说明:本题中,我们将空字符串定义为有效的回文串。 */class Solution { public boolean isPalindrome(String s) { if(s == null) { return true; } s = s.toLowerCase(); for(int i=原创 2021-11-28 20:18:26 · 314 阅读 · 0 评论 -
《LeetCode零基础指南》(第七讲) 贪心
1.611. 有效三角形的个数/*给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。 */class Solution { public int triangleNumber(int[] nums) { if(nums == null || nums.length < 3){ return 0; } Arrays.sort(nums);//先排序 int count = 0原创 2021-11-28 10:17:18 · 368 阅读 · 0 评论 -
《LeetCode零基础指南》(第六讲) C排序API
1.排序数组/**堆排序的思想就是先将待排序的序列建成大根堆,使得每个父节点的元素大于等于它的子节点。此时整个序列最大值即为堆顶元素,我们将其与末尾元素交换,使末尾元素为最大值,然后再调整堆顶元素使得剩下的 n-1 个元素仍为大根堆,再重复执行以上操作我们即能得到一个有序的序列。 */class Solution { public int[] sortArray(int[] nums) { heapSort(nums); return nums;原创 2021-11-27 17:00:27 · 927 阅读 · 0 评论 -
[学习报告]《LeetCode零基础指南》(第五讲) 指针
1.重新排列数组class Solution { public int[] shuffle(int[] nums, int n) { int [] ans = new int [2 * n]; for(int i = 0; i <= n -1 ; i++){ ans[2*i] = nums[i]; ans[2*i + 1] = nums[i + n]; } return ans原创 2021-11-26 16:20:59 · 72 阅读 · 0 评论 -
《LeetCode零基础指南》(第四讲) 一维数组
1.搜索旋转排序数组class Solution { public int search(int[] nums, int target) { //将数组一分为二,其中一定有一个是有序的,另一个可能是有序,也能是部分有序。 //此时有序部分用二分法查找。无序部分再一分为二,其中一个一定有序,另一个可能有序,可能无序 int n = nums.length; if (n == 0) { return -1;原创 2021-11-24 23:00:16 · 82 阅读 · 0 评论 -
[学习报告]《LeetCode零基础指南》(第三讲) 循环
1.求1+2+…+n求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)/**求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)*/class Solution { public int sumNums(int n) { boolean m = n > 1 && (n += sumNu原创 2021-11-24 09:33:44 · 274 阅读 · 0 评论 -
《LeetCode零基础指南》(第2讲) 函数)[学习报告]
本人基于Java语言实现!!!1.两数相除给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2(二分还是不熟练具体参考题解吧各位….)class Solution { public int divide(int d原创 2021-11-23 10:10:18 · 219 阅读 · 0 评论 -
进制转换求解
k进制表示下的各位数字和给你一个整数 n(10 进制)和一个基数 k ,请你将 n 从 10 进制表示转换为 k 进制表示,计算并返回转换后各位数字的 总和 。转换后,各位数字应当视作是 10 进制数字,且它们的总和也应当按 10 进制表示返回。思路:集合 + 短除法class Solution { public int sumBase(int n, int k) { ArrayList<Integer> list = new ArrayList<>(原创 2021-11-22 15:13:13 · 144 阅读 · 0 评论 -
算法刷题小结
1.LeetCode1399给你一个整数 n 。请你先求出从 1 到 n 的每个整数 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。思路:使用哈希表建立一个从数位和到原数字的哈希映射,对每一个数字 ,使键对应的值自增1。然后我们在值的集合中找到最大的值 m,再遍历哈希表,统计值为 m 的个数就可以了。class Solution { public int countLargestGroup原创 2021-11-21 21:29:24 · 224 阅读 · 0 评论 -
剑指offer13
剑指offer13地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?思路:对数 x 每次对 10 取余,就能知道数 x 的个位数是多少,然后再将 x原创 2021-11-21 20:24:18 · 62 阅读 · 0 评论 -
算法刷题小结
刷题小结1.在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。方法一:使用哈希表存储频数思路与算法:我们可以对字符串进行两次遍历。在第一次遍历时,我们使用哈希映射统计出字符串中每个字符出现的次数。在第二次遍历时,我们只要遍历到了一个只出现一次的字符,那么就返回该字符,否则在遍历结束后返回空格。class Solution { public char firstUniqChar(String s) { ...原创 2021-11-14 23:24:53 · 92 阅读 · 0 评论