前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode - 删除链表中的节点 & 移动零

LeetCode - 删除链表中的节点 & 移动零

作者头像
晓痴
发布2019-10-10 17:15:42
8090
发布2019-10-10 17:15:42
举报
文章被收录于专栏:曌的晓痴曌的晓痴

鉴于这次的两题,异常的短,所以再次合二为一。分别是第237,难度简单,以及283题,难度同样简单。

原题地址:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ & https://leetcode-cn.com/problems/move-zeroes/

题目描述

第一题是删除链表中的节点,题目很长,反正主要就是一句话:

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

第二题是移动零,题目很简单,也是一句话:

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

解题思路:

先说第一题,删除链表中的节点,这题确实很简单。直接将节点的next指针,指向原本的next.next节点就可以了。所以不难。

再来说第二题,写的略显复杂了。当时我不懂什么双指针,现在我懂了。所以讲两种方法:

第一种就是我现在写的,单指针遍历数组,遇到非0的,就去后面找0,然后让0和0相邻的元素更换位置。这个是什么鬼操作,我也想不通,可能脑回路出了点问题...

第二种双指针的方法,会快很多。两个指针分别从第一个元素出发。快指针用于寻找非0元素,慢指针用于记录非零元素的个数(也就是坐标)。当快指针找到一个非0元素,那就直接和慢指针所指向的元素换个位置就好了。

比如1,2,3,4,0,5,6,7,0,8,9,0,前4个元素都是正常的,快指针遇到5时,慢指针指向的还是0,所以交换,变成1,2,3,4,5,0,6,7,0,8,9,0。当快指针遇到6时,慢指针指向的还是0。最后就变成了1,2,3,4,5,6,7,8,9,0,0,0。

中文官网题解:

https://leetcode-cn.com/problems/delete-node-in-a-linked-list/solution/

https://leetcode-cn.com/problems/move-zeroes/solution/

个人题解:

代码语言:javascript
复制
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}

/**
* 移动零
*/
public class Solution {
    public void moveZeroes(int[] nums) {
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0 && i != 0) {
                for (int j = i; j > 0 && nums[j - 1] == 0; j--) {
                    int temp = nums[j - 1];
                    nums[j - 1] = nums[j];
                    nums[j] = temp;
                }
            }
        }
    }
}

结果:

下面是分别的运算结果。嗯,移动零的题目,速度莫名的慢。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 曌的晓痴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档