1.实现 pow(x, n) ,即计算 x 的 n 次幂函数。
class Solution:
def myPow(self, x, n):
if n < 0:
return self.myPow(1/x,-n)
if n == 0:
return 1
if n == 2:
return x*x
return self.myPow(self.myPow(x,n/2),2) if not n%2 else x * self.myPow(self.myPow(x,n//2),2)
2.给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
length = len(nums)
if length <= 1:
return nums[0]
left = self.maxSubArray(nums[0 : len(nums) // 2])
right = self.maxSubArray(nums[len(nums) //2 : len(nums)])
middle_left = nums[len(nums) // 2 - 1]
auxiliary_1 = 0
for index1 in range(len(nums) // 2 - 1, -1, -1):
auxiliary_1 += nums[index1]
middle_left = max(middle_left, auxiliary_1)
middle_right = nums[len(nums) // 2]
auxiliary_2 = 0
for index2 in range(len(nums) // 2, len(nums), 1):
auxiliary_2 += nums[index2]
middle_right = max(middle_right, auxiliary_2)
middle = middle_left + middle_right
result = max(left, right, middle)
return result
3.给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
var majorityElement = function(nums) {
let hash = {};
let len = Math.ceil(nums.length / 2);
nums.forEach((item, index) => {
hash[item] = hash[item] ? hash[item] + 1 : 1;
})
for(let key in hash) {
if(hash[key] >= len) {
return key;
}
}
};
144

被折叠的 条评论
为什么被折叠?



