力扣简单题 题解(java)
力扣简单题 题解(java)
不听话的小耳朵
这个作者很懒,什么都没留下…
展开
-
移除元素
题目链接:移除元素 题解:双指针方法 双指针都从左侧移动,缺点:移动的元素较多 双指针从两端向中间移动,减少移动次数,缺点:数据的顺序和原来相比发生了变化。 class Solution { public int removeElement(int[] nums, int val) { int p = -1; for (int i = 0; i < nums.length; ++i) { if (nums[i] == val) {原创 2021-03-25 09:44:47 · 44 阅读 · 0 评论 -
删除有序数组中的重复项
题目链接:删除有序数组中的重复项 题解:双指针法 class Solution { public int removeDuplicates(int[] nums) { if (nums.length == 0) { return 0; } int p = 0; for (int i = 1; i < nums.length; ++i) { if (nums[i] == nu.原创 2021-03-25 09:21:04 · 46 阅读 · 0 评论 -
合并两个有序链表
题目链接:合并两个有序链表 题解:有两个方案,迭代和递归。 迭代:迭代为了写代码方便,可以设置一个哨兵。 递归:返回当前两个链表较小的node,并在返回之前设置node的next; 迭代: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { .原创 2021-03-24 23:21:17 · 64 阅读 · 0 评论 -
有效的括号
题目链接: 有效的括号 题解:典型的栈问题。java中可以用Deque作为栈使用。Deque是一个接口,继承了collection和queue接口。 栈的基本操作包括push,pop(Deque,queue接口),peek(Deque,queue接口,size(Deque,collection接口)和isEmpty(collection接口)。 class Solution { private boolean ifMatch(char c1, char c2) { ...原创 2021-03-24 22:43:34 · 53 阅读 · 0 评论 -
最长公共前缀
题目链接:最长公共前缀 题解:遍历第一个字符串,检查其他字符串的字符是否和第一个的相同;停止条件,有字符串到达结尾或者和第一个字符串的字符不同。 class Solution { public String longestCommonPrefix(String[] strs) { if ((strs == null) || (strs.length == 0)) { return ""; } String s = st.原创 2021-03-24 21:59:12 · 49 阅读 · 0 评论 -
罗马数字转整数
题目链接:罗马数字转整数 思路:题目给出的罗马数字都是合法的,直接解析即可。可以考虑进行一边遍历,记录遍历的前一个字符,根据前一个字符判断V,X,L,C,D,M需要返回的值。 class Solution { public int romanToInt(String s) { int r = 0; char p = '\0'; for (int i = 0; i < s.length(); ++i) { char c原创 2021-03-24 21:47:39 · 51 阅读 · 0 评论 -
回文数
题目链接:回文数 1、方法一: 采用直观的想法,将数字直接反转,如果相等,则为回文。如果反转出现溢出,则肯定不会和原来的值相等。 class Solution { public boolean isPalindrome(int x) { if (x < 0) { return false; } int s = x; int r = 0; while (s != 0) { ..原创 2021-03-24 21:36:26 · 46 阅读 · 0 评论 -
整数反转
题目链接:整数反转 class Solution { public static final int subMax = Integer.MAX_VALUE / 10; public static final int subMaxR = Integer.MAX_VALUE % 10; public static final int subMin = Integer.MIN_VALUE / 10; public static final int subMinR = Integ原创 2021-03-24 17:15:03 · 70 阅读 · 0 评论 -
两数之和
链接:两数之和 class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer, Integer> hashMap = new HashMap<>(); for (int i = 0; i < nums.length; ++i) { int value = target - nums[i]; ..原创 2021-03-24 17:04:28 · 42 阅读 · 0 评论