求出硬币游戏的赢家
求出硬币游戏的赢家
给你两个 正 整数 x 和 y ,分别表示价值为 75 和 10 的硬币的数目。Alice 和 Bob 正在玩一个游戏。每一轮中,Alice 先进行操作,Bob 后操作。每次操作中,玩家需要拿走价值 总和 为 115 的硬币。如果一名玩家无法执行此操作,那么这名玩家 输掉 游戏。两名玩家都采取 最优 策略,请你返回游戏的赢家。
输入:x = 2, y = 7输出:”Alice”解释:游戏一次操作后结束:Alice 拿走 1 枚价值为 75 的硬币和 4 枚价值为 10 的硬币。
123var winningPlayer = function(x, y) { return Math.min(x, Math.floor(y / 4)) % 2 ? "Alice" : "Bob";};
Pow(x, n)
Pow(x, n)
实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,x^n )。
输入:x = 2.00000, n = 10输出:1024.00000
输入:x = 2.10000, n = 3输出:9.26100
12345678910111213var myPow = function(x, n) { // n=0 直接返回 1 if (n === 0) return 1; // n<0 时 x 的 n 次方等于 1 除以 x 的 -n 次方分 if (n < 0) return 1 / myPow(x, -n); // n 是奇数时 x 的 n 次方 = x*x 的 n-1 次方 if (n % 2) return x * myPow(x, n - 1); // n 是偶数,使用分治,一分为二,等于 x*x 的 n/2 次方 return myPow(x * x, n / 2);};
最小偶倍数
最小偶倍数
给你一个正整数 n ,返回 2 和 n 的最小公倍数(正整数)。
输入:n = 5输出:10解释:5 和 2 的最小公倍数是 10 。
输入:n = 6输出:6解释:6 和 2 的最小公倍数是 6 。注意数字会是它自身的倍数。
123var smallestEvenMultiple = function(n) { return n << (n & 1);};
全 0 子数组的数目
全 0 子数组的数目
给你一个整数数组 nums ,返回全部为 0 的 子数组 数目。子数组 是一个数组中一段连续非空元素组成的序列。
输入:nums = [1,3,0,0,2,0,0,4]输出:6解释:子数组 [0] 出现了 4 次。子数组 [0,0] 出现了 2 次。不存在长度大于 2 的全 0 子数组,所以我们返回 6 。
输入:nums = [0,0,0,2,0,0]输出:9解释:子数组 [0] 出现了 5 次。子数组 [0,0] 出现了 3 次。子数组 [0,0,0] 出现了 1 次。不存在长度大于 3 的全 0 子数组,所以我们返回 9 。
12345678910111213var zeroFilledSubarray = function(nums) { let count = 0, sum = 0; for (let i = 0; i < nums.length; i++) { if (nums[i] !== 0) { if (count > 0) sum += coun ...
生成不含相邻零的二进制字符串
生成不含相邻零的二进制字符串
给你一个正整数 n。如果一个二进制字符串 x 的所有长度为 2 的子字符串中包含 至少 一个 “1”,则称 x 是一个 有效 字符串。返回所有长度为 n 的 有效 字符串,可以以任意顺序排列。
输入: n = 3输出: [“010”,”011”,”101”,”110”,”111”]解释:长度为 3 的有效字符串有:”010”、”011”、”101”、”110” 和 “111”。
输入: n = 1输出: [“0”,”1”]解释:长度为 1 的有效字符串有:”0” 和 “1”。
12345678910111213141516171819var validStrings = function(n) { const res = []; function dfs(arr) { if (arr.length === n) { res.push(arr.join('')); return; } if ( ...
两个字符串的排列差
两个字符串的排列差
给你两个字符串 s 和 t,每个字符串中的字符都不重复,且 t 是 s 的一个排列。排列差 定义为 s 和 t 中每个字符在两个字符串中位置的绝对差值之和。返回 s 和 t 之间的 排列差 。
输入:s = “abc”, t = “bac”输出:2
输入:s = “abcde”, t = “edbac”输出:12
123456789101112var findPermutationDifference = function(s, t) { let diff = 0; let indices = new Map(); let length = s.length; for (let i = 0; i < length; i++) { indices[s[i]] = i; } for (let i = 0; i < length; i++) { diff += Math.abs(indices[t[i]] - i); } re ...
每个字符最多出现两次的最长子字符串
每个字符最多出现两次的最长子字符串
给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,并返回该子字符串的最大长度。
输入: s = “bcbbbcba”输出: 4解释:以下子字符串长度为 4,并且每个字符最多出现两次:”bcbbbcba”。
输入: s = “aaaa”输出: 2解释:以下子字符串长度为 2,并且每个字符最多出现两次:”aaaa”。
123456789101112131415var maximumLengthSubstring = function(s) { let ans = 0, left = 0, right = 0; const map = new Map(); while(left <= right && right < s.length) { if ((map.get(s[right]) || 0) < 2) { map.set(s[right], (map.get(s[right]) || 0) + 1); ...
删除回文子序列
删除回文子序列
给你一个字符串 s,它仅由字母 ‘a’ 和 ‘b’ 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。返回删除给定字符串中所有字符(字符串为空)的最小删除次数。「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。
输入:s = “ababa”输出:1解释:字符串本身就是回文序列,只需要删除一次。
输入:s = “abb”输出:2解释:”abb” -> “bb” -> “”.先删除回文子序列 “a”,然后再删除 “bb”。
1234567var removePalindromeSub = function(s) { const n = s.length for(let i = 0; i < n - i; i++) if(s.charCodeAt(i) !== s.charCodeAt(n - 1 - i)) return 2 r ...
破坏回文串
破坏回文串
给你一个由小写英文字母组成的回文字符串 palindrome ,请你将其中 一个 字符用任意小写英文字母替换,使得结果字符串的 字典序最小 ,且 不是 回文串。请你返回结果字符串。如果无法做到,则返回一个 空串 。如果两个字符串长度相同,那么字符串 a 字典序比字符串 b 小可以这样定义:在 a 和 b 出现不同的第一个位置上,字符串 a 中的字符严格小于 b 中的对应字符。例如,”abcc” 字典序比 “abcd” 小,因为不同的第一个位置是在第四个字符,显然 ‘c’ 比 ‘d’ 小。
输入:palindrome = “abccba”输出:”aaccba”解释:存在多种方法可以使 “abccba” 不是回文,例如 “zbccba”, “aaccba”, 和 “abacba” 。在所有方法中,”aaccba” 的字典序最小。
输入:palindrome = “a”输出:””解释:不存在替换一个字符使 “a” 变成非回文的方法,所以返回空字符串。
1234567891011121314var breakPalindrome = function(palindrome ...
重构字符串
重构字符串
给定一个字符串 s ,检查是否能重新排布其中的字母,使得两相邻的字符不同。返回 s 的任意可能的重新排列。若不可行,返回空字符串 “” 。
输入: s = “aab”输出: “aba”
输入: s = “aaab”输出: “”
12345678var countBinarySubstrings = function(s) { let arr = s.replace(/10/g, '1 0').replace(/01/g, '0 1').split(/\s/) let n = 0 for(i=0; i< arr.length - 1; i++) { n += Math.min(arr[i].length, arr[i + 1].length) } return n};