Day 11

第16题:

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。来源:力扣(LeetCode)

1、和之前的15题一样,也可以用暴力解法将结果输出,其中用户绝对值来计算target和三数之和的差距,依次求出最接近的。

  

2、昨天求的第15题也用了双指针法,这道题非常相近,也可以先枚举一个数,然后计算另两个数的和与target-nums[i]之间的差距;

  当然,在这之前需要将数组排序好,可以减少一些筛选步骤;

  当三数之和大于target时,k前移;

  三数之和小于target时,j前移;

  可得出结果。

  

第1025题:

爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。

最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:

选出任一 x,满足 0 < x < N 且 N % x == 0 。
用 N - x 替换黑板上的数字 N 。
如果玩家无法执行这些操作,就会输掉游戏。

只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。来源:力扣(LeetCode)

1、开始想到奇偶来判断两人之间谁输谁赢,

  动态规划:定义一个数组来存储当N为i时他的Boolean值,比如N=1时,肯定是false,N=2时,肯定是true;

  就将dp[1]和dp[2]设为false和true,然后去求当N等于3时,他的Boolean值;

  在判断N等于后面的值时,可以利用之前求出的dp[N]的值,如当求dp[3]的时候,它一开始只能-1,所以得到2,而dp[2]为true,就可以得出dp[3]=true;

  这样就可以得出两者谁赢的结果了。

  

posted @ 2020-06-27 00:32  Liang-Yi  阅读(29)  评论(0编辑  收藏  举报