Task16

本文链接:

https://blog.csdn.net/qq_34811382/article/details/113357998


237. 删除链表中的节点

在这里插入图片描述

思路:

把要删除的节点的下一个节点的值赋给该节点,删除下一个节点,在令该节点的下一位指向下一位的下一位。

class Solution
{
public:
    void deleteNode(ListNode *node)
    {
        node->val = node->next->val;
        node->next = node->next->next;
    }
};

238. 除自身以外数组的乘积

在这里插入图片描述

思路:

记录两个数组,一个记录左边的乘积,一个记录右面的乘积

class Solution
{
public:
    vector<int> productExceptSelf(vector<int> &nums)
    {
        vector<int> res(nums.size(), 1);
        int left = 1, right = 1;
        for (int i = 0, j = nums.size() - 1; i < nums.size(); i++, j--)
        {
            res[i] *= left;
            res[j] *= right;
            left *= nums[i];
            right *= nums[j];
        }
        return res;
    }
};

292. Nim 游戏

在这里插入图片描述

思路:

你拿一个,只要对面拿n-1 or n-2 or n-3 有一个输了,你就可以赢。但是会超时

bool canWinNim(int n)
{
    if (n < 4)
        return true;
    if (canWinNim(n - 1) == false || canWinNim(n - 2) == false || canWinNim(n - 3) == false)
        return true;
    return false;
}

想着超时,于是跑了一下,想找一下规律,发现只有是4的倍数,就会false
/* 1 true
2 true
3 true
4 false
5 true
6 true
7 true
8 false
9 true
10 true
11 true
12 false
13 true
14 true
15 true
16 false
17 true
18 true
19 true
20 false
21 true
22 true
23 true
24 false
25 true
26 true
27 true
28 false
29 true
30 true
31 true
32 false
33 true
34 true
35 true
36 false
37 true
38 true
39 true
40 false
41 true
42 true
43 true
44 false
45 true
46 true
47 true
48 false
49 true
[Done] exited with code=1 in 228.001 seconds */

所以我想着直接看给的值是不是4的倍数就可以了。

代码:

class Solution {
public:
    bool canWinNim(int n) {
         return n%4!=0;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值