提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一、力扣26. 删除有序数组中的重复项
class Solution {
public int removeDuplicates(int[] nums) {
int i = 0, j = 0;
for(; i < nums.length; ){
if(nums[i] == nums[j]){
i ++;
}else{
nums[++j] = nums[i++];
}
}
return j + 1;
}
}
二、力扣83. 删除排序链表中的重复元素
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null){
return null;
}
ListNode p1 = head, p2 = head;
while(p2 != null){
if(p2.val == p1.val){
p2 = p2.next;
}else{
p1 = p1.next;
p1.val = p2.val;
p2 = p2.next;
}
}
p1.next = null;
return head;
}
}
三、力扣27. 移除元素
class Solution {
public int removeElement(int[] nums, int val) {
if(nums.length == 0){
return 0;
}
int i = 0, j = 0;
for(;i < nums.length; ){
if(nums[i] != val){
nums[j++] = nums[i++];
}else{
i ++;
}
}
return j;
}
}
四、力扣283. 移动零
class Solution {
public void moveZeroes(int[] nums) {
for(int i = 0,j = -1; i <nums.length; ){
if(nums[i] != 0){
int temp = nums[++j];
nums[j] = nums[i];
nums[i ++] = temp;
}else{
i ++;
}
}
}
}
五、力扣167. 两数之和 II - 输入有序数组
class Solution {
public int[] twoSum(int[] numbers, int target) {
for(int i = 0, j = numbers.length-1; i < j;){
if(numbers[i] + numbers[j] == target){
return new int[]{i+1,j+1};
}else if(numbers[i] + numbers[j] > target){
j --;
}else{
i ++;
}
}
return new int[2];
}
}
六、力扣344. 反转字符串
class Solution {
public void reverseString(char[] s) {
for(int i = 0, j = s.length-1; i < j; i ++, j --){
char temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
七、力扣5. 最长回文子串
class Solution {
public String longestPalindrome(String s) {
String res = "";
for(int i = 0; i < s.length(); i ++){
String s1 = fun(s,i,i);
if(res.length() < s1.length()){
res = s1;
}
if(i+1 < s.length()){
String s2 = fun(s,i,i+1);
if(res.length() < s2.length()){
res = s2;
}
}
}
return res;
}
public String fun(String s, int left, int right){
while(left >= 0 && right < s.length()){
if(s.charAt(left) != s.charAt(right)){
return s.substring(left+1,right);
}
left --;
right ++;
}
return s.substring(left+1,right);
}
}
本文介绍了力扣编程题目中涉及的7个问题,包括从有序数组中删除重复项、删除排序链表中的重复元素、移除数组元素、移动链表中的零、两数之和II、反转字符串以及找到最长回文子串。每个问题都展示了相应的Java解决方案。
738

被折叠的 条评论
为什么被折叠?



