2021-03-18力扣刷题

编号283移动0

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:

必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/move-zeroes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

package lk2021_03_18;

import java.util.Arrays;

//编号283移动零
public class Main {
    
    
	public static void main(String[] args) {
    
    
		Main main = new Main();
		int[] a= {
    
    0,1,3,0,12};
		main.moveZeroes(a);
		System.out.println(Arrays.toString(a));
	}
	public void moveZeroes(int[] nums) {
    
    
		int index=0;
		for (int i = 0; i < nums.length; i++) {
    
    
			if(nums[i]!=0) {
    
    
				nums[index++]=nums[i];
			}
		}
		for (int i = index; i < nums.length; i++) {
    
    
			nums[i]=0;
		}
	}
	
}

编号203移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
在这里插入图片描述

示例 1:

输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例 2:

输入:head = [], val = 1
输出:[]
示例 3:

输入:head = [7,7,7,7], val = 7
输出:[]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-linked-list-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

扫描二维码关注公众号,回复: 12742155 查看本文章
package lk2021_03_18;
class ListNode {
    
    
	 int val;
	 ListNode next;
	 ListNode() {
    
    }
	 ListNode(int val) {
    
     this.val = val; }
	 ListNode(int val, ListNode next) {
    
     this.val = val; this.next = next; }
}
public class Main1 {
    
    

	public ListNode removeElements(ListNode head, int val) {
    
    
		ListNode dummy = new ListNode();//虚拟头结点
		dummy.next = head;
		ListNode pre = dummy;
		while (head!=null) {
    
    
			if(head.val==val) {
    
    
				pre.next=head.next;
			}else {
    
    
				pre=head;
			}
			head=head.next;
		}
		return dummy.next;
    }
}

编号206反转链表

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

package lk2021_03_18;
class ListNode {
    
    
	 int val;
	 ListNode next;
	 ListNode() {
    
    }
	 ListNode(int val) {
    
     this.val = val; }
	 ListNode(int val, ListNode next) {
    
     this.val = val; this.next = next; }
}
public class Main2 {
    
    

	 public ListNode reverseList(ListNode head) {
    
    
		 ListNode dummy = new ListNode();//虚拟头节点
		 dummy.next=head;
		 while (head!=null&&head.next!=null) {
    
    
			ListNode dnext = dummy.next;//事先存好虚拟头节点的下一个指向
			ListNode hnext = head.next;//事先存好头节点的下一个指向
			
			//交换
			dummy.next=hnext;
			head.next=hnext.next;
			hnext.next=dnext;
		}
		
		return dummy.next;
	 }
}

猜你喜欢

转载自blog.csdn.net/qq_43610675/article/details/114969942