编号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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
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;
}
}