ag百家乐赢了100多万 2025-01-15: 实施操作可得到的最大总奖励 Ⅰ。用go说话, 给定一个
发布日期:2024-01-05 20:16    点击次数:154

2025-01-15:实施操作可得到的最大总奖励 Ⅰ。用go说话,给定一个整数数组 rewardValues,其中包含 n 个代表奖励值的数字。

你首先时的总奖励 x 为 0,况且所有下标王人是未标志气象。你不错进行以下操作几许次:

1.从索引范围 [0, n - 1] 中聘用一个未标志的下标 i。

2.淌若 rewardValues[i] 大于面前总奖励 x,则将 rewardValues[i] 加到 x 上(即 x = x + rewardValues[i]),并将下标 i 标志为已科罚。

请筹备并复返通过最好政策大要得到的最大总奖励。

1

1

输入:rewardValues = [1,1,3,3]。

输出:4。

评释:

秩序标志下标 0 和 2,总奖励为 4,这是可得到的最大值。

谜底2025-01-15:

chatgpt[1]

题目来自leetcode3180。

大体活动如下:

1.将给定的奖励数组 rewardValues 排序,假定输入为 [1, 1, 3, 3],百家乐AG点杀排序后会酿成 [1, 1, 3, 3]。

2.运漂浮两个大整数 f0 和 f1,f0 运漂浮为 1,f1 运漂浮为 0。

3.首先遍历排序后的奖励数组 rewardValues。

4.关于每个奖励值 x,创建两个大整数 mask 和 one。mask 用来暗示面前科罚的奖励的标志位,运转为0;one 暗示1。

5.筹备面前奖励 x 对应的mask值:mask = (1

6.筹备 f1 = (f0 & mask)

7.更新 f0 = f0 | f1。

8.复返 f0 中最高位1的位置减1(即 f0.BitLen - 1)当作最大总奖励值。

总的时刻复杂度分析:

• 排序数组的时刻复杂度为O(nlogn),其中 n 为奖励数组的长度。

• 遍历奖励数组的时刻复杂度为 O(n)。

是以总的时刻复杂度为 O(nlogn)。

总的稀奇空间复杂度分析:

• 稀奇创建了一些大整数值,但这些值的个数不随输入数组大小变化,扶助空间复杂度不错忽略不计。

是以总的稀奇空间复杂度为 O(1)。

Go完好意思代码如下:

package mainimport ( "fmt" "sort" "math/big")func maxTotalReward(rewardValues []int) int { sort.Ints(rewardValues) f0, f1 := big.NewInt(1), big.NewInt(0) for _, x := range rewardValues { mask, one := big.NewInt(0), big.NewInt(1) mask.Sub(mask.Lsh(one, uint(x)), one) f1.Lsh(f1.And(f0, mask), uint(x)) f0.Or(f0, f1) } return f0.BitLen - 1}func main { rewardValues := []int{1,1,3,3} result := maxTotalReward(rewardValues) fmt.Println(result)}

在这里插入图片容貌

C完好意思代码如下:

#include #include // 函数用来相比两个整数,供 qsort 使用int compare(const void *a, const void *b) { return (*(int *)a - *(int *)b);}// 筹备最大总奖励的函数int maxTotalReward(int *rewardValues, int size) { // 排序赏赐值数组 qsort(rewardValues, size, sizeof(int), compare); unsigned long long f0 = 1; // 运转值 unsigned long long f1 = 0; // 变量 f1 // 遍历赏赐值数组 for (int i = 0; i = (1ULL

在这里插入图片容貌

C++完好意思代码如下:

#include #include #include #include int maxTotalReward(std::vector& rewardValues) { // 排序赏赐值数组 std::sort(rewardValues.begin, rewardValues.end); unsigned long long f0 = 1; // 运转值 unsigned long long f1 = 0; // 变量 f1 // 遍历赏赐值数组 for (int x : rewardValues) { unsigned long long mask = (1ULL (std::log2(f0)); // 使用 log2 筹备位长度}int main { std::vector rewardValues = {1, 1, 3, 3}; int result = maxTotalReward(rewardValues); std::cout

在这里插入图片容貌

Python完好意思代码如下:

# -*-coding:utf-8-*-import mathdef max_total_reward(reward_values): reward_values.sort f0, f1 = 1, 0 for x in reward_values: mask, one = 0, 1 mask = (one

在这里插入图片容貌

JavaScript完好意思代码如下:

function maxTotalReward(rewardValues) { rewardValues.sort((a, b) => a - b); let f0 = BigInt(1); let f1 = BigInt(0); for (let x of rewardValues) { let mask = BigInt(1)

在这里插入图片容貌

Solidity完好意思代码如下:

// SPDX-License-Identifier: MITpragma solidity ^0.8.0;contract MaxTotalReward { function maxTotalReward(uint[] memory rewardValues) public pure returns (uint) { uint n = rewardValues.length; uint[2] memory f; f[0] = 1; f[1] = 0; for (uint i = 0; i

在这里插入图片容貌

援用流畅

[1] chatgpt: https://chatbotsplace.com/?rc=nnNWSCJ7EPag百家乐赢了100多万



Powered by 百家乐AG点杀 @2013-2022 RSS地图 HTML地图

Powered by365站群