
leetcode
singularityDZF
一个自学Java的小白
展开
-
leetcode024--环形链表
这道题用到了弗洛伊德判圈法思想:弗洛伊德(Floyd )使用了两个指针,一个慢指针(龟)每次前进一步,快指针(兔)指针每次前进两步(两步或多步效果是等价的,只要一个比另一个快就行。但是如果移动步数增加,算法的复杂度可能增加)。如果两者在链表头以外(不包含开始情况)的某一点相遇(即相等)了,那么说明链表有环,否则,如果(快指针)到达了链表的结尾(如果存在结尾,肯定无环),那么说明没环。环形链表核心代码如下:private static ListNode detectCycleFirstNode...原创 2022-05-23 21:09:08 · 267 阅读 · 0 评论 -
leetcode023--删除排序链表中的重复元素
两种解法:第一种思路:采用常规方法,判断当前节点的值是否和下一个节点相等,若相等,则让让当前节点的next域为下一个节点的下一个节点;第二种思路: 采用递归的思想,如下://递归处理 private static ListNode deleteDuplicates2(ListNode head){ if (head == null || head.next == null){ return head; } h...原创 2022-05-23 18:16:56 · 210 阅读 · 0 评论 -
leetcode022--合并两个有序数组
这道题有三种解法:第一种:直接将两个数组合并,再用JDK自带的快排对数组进行排序。第二种:创建一个临时数组,该数组大小为两个要合并的数组中元素个数之和;利用双指针分别对两个数组进行遍历,在遍历的过程中依次将较小的元素放入临时数组,最后将临时数组的元素一一赋给nums1即可。第三种:不用创建临时数组,也是采用双指针进行遍历,不过这次是从后往前遍历,依次将较大的元素放入nums1的尾部,这种方法最佳!代码如下:import java.util.Arrays;import java.u..原创 2022-05-18 22:41:11 · 217 阅读 · 0 评论 -
leetcode021--验证字符串是否是回文串(忽略字符大小写)
import java.util.Locale;public class test21 { /** * 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 * 说明:本题中,我们将空字符串定义为有效的回文串。 * * 示例 1: * 输入: "A man, a plan, a canal: Panama" * 输出: true * 解释:"amanaplanacanalpanama" 是回文串.原创 2022-05-18 22:07:18 · 233 阅读 · 0 评论 -
leetcode020--返回其二进制表达式中数字位数为 ‘1‘ 的个数
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;public class test20 { /** * 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。 * * 提示: * 请注意,在某些语言(.原创 2022-04-25 16:16:07 · 154 阅读 · 0 评论 -
leetcode019--找出在数组中出现次数 大于n/2的元素
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class test19 { /** * 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于n/2的元素。 * 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 * * 示例1: * 输入:[3,2,3] .原创 2022-04-25 16:13:53 · 600 阅读 · 0 评论 -
leetcode018--容纳最多的水
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class test18 { /** * 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线, * 垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多.原创 2022-04-25 16:12:42 · 128 阅读 · 0 评论 -
leetcode017--买股票
import java.util.Scanner;public class test17 { /** * 给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。 * 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 * 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 * * * 示例 1:.原创 2022-04-25 16:06:37 · 103 阅读 · 0 评论 -
leetcode016--将两个非递减数组合并
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;public class test16 { /** * 给你两个按 非递减顺序 排列的整数数组nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 * 请你 合并 nums2 到 num.原创 2022-04-25 16:03:47 · 316 阅读 · 0 评论 -
leetcode015--爬楼梯
import java.util.Scanner;public class test15 { /** * 假设你正在爬楼梯。需要 n阶你才能到达楼顶。 * 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? * 注意:给定 n 是一个正整数。 * * 示例 1: * 输入: 2 * 输出: 2 * 解释: 有两种方法可以爬到楼顶。 * 1. 1 阶 + 1 阶 * 2. .原创 2022-04-25 16:01:54 · 138 阅读 · 0 评论 -
leetcode014--实现开平方mySqrt()函数
import java.util.Scanner;public class test14 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextInt(); System.out.println(mySqrt(x)); } public static int mySqrt(int x){ .原创 2022-04-25 16:00:55 · 304 阅读 · 0 评论 -
leetcode013--返回两个二进制字符串的和
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class test13 { /** * 给你两个二进制字符串,返回它们的和(用二进制表示)。 * 输入为 非空 字符串且只包含数字1和0。 * * 示例1: * 输入: a = "11", b = "1" * 输出: "100" .原创 2022-04-25 15:58:46 · 213 阅读 · 0 评论 -
leetcode012--给非负整数所表示的整数数组加一
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class test12 { /** * 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 * 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 * 你可以假设除了整数 0 之外,这个整数不会以零开头。 * * .原创 2022-04-25 15:46:29 · 120 阅读 · 0 评论 -
leetcode010--用动态规划思想寻找有最大和的连续子数组
import java.util.Scanner;public class test10 { /** * 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 * * 示例 1: * 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] * 输出:6 * 解释:连续子数组[4,-1,2,1] 的和最大,为6 。 * * 示例 2: * 输入:n.原创 2022-04-25 15:38:18 · 118 阅读 · 0 评论 -
leetcode009--用二分查找在数组中搜索目标值
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Map;public class test09 { /** * 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用.原创 2022-04-22 23:10:20 · 495 阅读 · 0 评论 -
leetcode008--实现strStr()函数
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class test08 { /** * 实现strStr()函数。 * 给你两个字符串haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 * *.原创 2022-04-22 23:07:22 · 82 阅读 · 0 评论 -
leetcode007--判断字符串中的括号是否匹配
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;/** * 给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。 * 有效字符串需满足: * * 左括号必须用相同类型的右括号闭合。 * 左括号必须以正确的顺序闭合。 * * 示例 1: * 输入:s = "()" *.原创 2022-04-22 23:04:58 · 123 阅读 · 0 评论 -
leetcode006--查找字符串数组中的最长公共前缀
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class test06 { /** * 编写一个函数来查找字符串数组中的最长公共前缀。 * 如果不存在公共前缀,返回空字符串""。 * * 示例 1: * 输入:strs = ["flower","flow","flight"] * 输出.原创 2022-04-22 23:01:31 · 207 阅读 · 0 评论 -
leetcode005--原地删除数组中的重复元素
import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class test05 { /** * 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 * 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 * * 说明: * 为什.原创 2022-04-22 22:57:29 · 179 阅读 · 0 评论 -
leetcode004--罗马数字转整数
import java.util.HashMap;import java.util.Map;import java.util.Scanner;public class test04 { /** * 13. 罗马数字转整数 * 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 * * 字符 数值 * I 1 * V 5 * X .原创 2022-04-22 22:53:40 · 157 阅读 · 0 评论 -
leetcode003--判断一个整数是否为回文数
import java.util.Scanner;/** * 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 * 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 * * 示例 1: * 输入:x = 121 * 输出:true * * 示例2: * 输入:x = -121 * 输出:false * 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回.原创 2022-04-22 22:49:37 · 101 阅读 · 0 评论 -
leetcode002--将有符号整数的数字部分反转
import java.util.Scanner;public class test02 { /** * 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 * 如果反转后整数超过 32 位的有符号整数的范围[?2**31, 2**31? 1] ,就返回 0。 * 假设环境不允许存储 64 位整数(有符号或无符号)。 * * 示例 1: * 输入:x = 123 * 输出:321 * 示例.原创 2022-04-22 22:47:15 · 364 阅读 · 0 评论 -
leetcode001--返回和为target的数组元素的下标
import java.sql.SQLOutput;import java.util.HashMap;import java.util.Map;import java.util.Scanner;public class test01 { /** * 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 * 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出.原创 2022-04-22 22:38:08 · 244 阅读 · 0 评论