leetcode腾讯50题-237-238-292

237. 删除链表中的节点

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为要被删除的节点

class Solution {

public:

    void deleteNode(ListNode* node) {

        node->val=node->next->val;

        node->next=node->next->next;

    }

};

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

给你一个长度为n的整数数组nums,其中n> 1,返回输出数组output,其中output[i]等于nums中除nums[i]之外其余各元素的乘积。

class Solution {

public:

    vector<int> productExceptSelf(vector<int>& nums) {

        //O(n),不使用除法

        int n=nums.size();

        vector<int>res(nums.size());

        res[0]=1;

        for(int i=1;i<n;i++)

        {

            res[i]=res[i-1]*nums[i-1];

        }

        int temp=1;

        for(int i=n-1;i>=0;i--)

        {

            res[i]=res[i]*temp;

            temp*=nums[i];

        }

        return res;

    }

};

292. Nim 游戏

你和你的朋友,两个人一起玩Nim 游戏

桌子上有一堆石头。

你们轮流进行自己的回合,你作为先手。

每一回合,轮到的人拿掉 1 - 3 块石头。

拿掉最后一块石头的人就是获胜者。

假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为n的情况下赢得游戏。如果可以赢,返回true;否则,返回false。

class Solution {

public:

    bool canWinNim(int n) {

        return (n % 4 != 0);

    }

}; 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容