- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在开发一个函数,它将一个数字数组作为输入并输出一个 int,这是最大的附加值
catch:如果选择了 num[i],并且 num[i-1] 和/或 num[i+1] 与 num[i] 具有相同的值,则所有具有 num[i 的邻居的相邻数字] 将被删除。
如果选择删除任何元素并将其添加到总和中,则将删除等于其中一个邻居的任何其他元素而不添加到分数中。在第一种情况下,通过删除 2(索引 1),它的邻居为 2,因此所有 2 将在一轮中被删除。
例如,如果我们有 0,2,2,2,7,2,2,2。输出应为 2+7=9,因为其他 2 将全部删除
但是,我卡在案例 3 和 5 上,我解决了案例 1、2 和 4
任何输入将不胜感激
function findMaxScore(nums){
var curr_max = 0;
var countNeg = 0;
//edge case: if all numbers are < 0, return 0
let allNeg = nums => nums.every(n => n <= 0);
if (nums.length === 0 || allNeg(nums)){
console.log("All numbers in nums are negative or =0, thus return 0");
return 0;}
else{
for (var i = 0; i<nums.length; i++){
//if there is a 0 in the array or a negative number, move on
//since they don't add any positive values
if(nums[i]<0 || nums[i]===0){
nums.splice(i,1);
console.log("got rid of all the 0s and negative numbers, currently num is: "+ nums);
}
var leftNeighbor = nums[i-1];
//console.log("left neighbor: "+leftNeighbor);
var rightNeighbor = nums[i+1];
//console.log("right neighbor: "+rightNeighbor);
if(leftNeighbor<=0){
nums.splice(i-1,1);
}
if(rightNeighbor<=0){
nums.splice(i+1,1);
}
curr_max+= nums[i];
//delete all neighboring numbers that contain the same value as i-1 and i+1
//if the left or ride side of subarray contains the same neighboring value,
//delete that number as well
if(nums[i]===leftNeighbor){
nums.splice(i-1,1);
if(nums[i-2]===leftNeighbor){
nums = nums.filter(n => n !== leftNeighbor);
}
}
else if(nums[i]===rightNeighbor){
nums.splice(i+1,1);
if(nums[i+2]===rightNeighbor){
nums = nums.filter(n => n !== rightNeighbor);
}
}
if(nums.length=1){
curr_max+= nums[i];
} return curr_max;
console.log("current max: "+curr_max);
//if no nums[i-1] or nums[i+1] is not equal to nums[i]
//delete the neighboring numbers
if((leftNeighbor!=nums[i]&&rightNeighbor!=nums[i])&&nums.length>1){
nums.splice(i-1,1);
nums.splice(i,1);
i++;
//console.log("iteration number: "+(i+1)+". num is currently at index "+(i)+", with a value of: "+nums[i]);
//console.log("deleting value at nums[i-1]: "+ nums[i-1]+ ",index of: "+ (i-1));
//console.log("deleting value at nums[i+1]: "+ nums[i]+ ",index of: "+ (i));
curr_max+= nums[i];
}
}
}
/*
//check to see if the current score is the max score
var max_so_far = curr_max;
for (var j = i; j< nums.length; j++){
curr_max += (nums[j]-nums[j-1]);
max_so_far = Math.max(curr_max,max_so_far);
}
return max_so_far;
*/
return curr_max;
}
console.log("result one: "+findMaxScore([0,1,1,5,1,1])+", expected value 6");//1+5
console.log("result two: "+findMaxScore([1,1,1,1,1,1,1,14,1,1])+", expected value 14");//1+14
console.log("result three: "+findMaxScore([-3,-7,3,2,3,4,3,0])+", expected value 9");//expected 9 3+3+3
console.log("result four: "+findMaxScore([-1,-7,-9])+", expected value 0");//expected 0
console.log("result five: "+findMaxScore([0,0,0,1,2,3,4,5,6,7,8,9,10])+", expected value 30");//expected 30 10+8+6+4+2
我的输出:
got rid of all the 0s and negative numbers, currently num is: 1,1,4,1,1
result one: 5, expected value 5
result two: 11, expected value 11
result three: 2, expected value 9
All numbers in nums are negative or =0, thus return 0
result four: 0, expected value 0
got rid of all the 0s and negative numbers, currently num is: 1,2,3,4,5,6,7,8,9,10
result five: 2, expected value 30
最佳答案
灵魂获得所有预期值,除了第二个,它获得最后注释的值 15
而不是 14
。
How it works:
It takes an iterative and recursive approach, iterative, because it iterates every item and recursive by handing over an array and a partial sum for the visited/removed values.
As any working recursive function this recursive design takes an exit condition on top, where it check the remaining length of the array and take the maximum value as result and returnes the function
iter
.Then the iterative part takes place, where a value
v
is taken to the sum and the array is filtered from
- the value from the left neighbor,
- the value from the right neighbor and
- from the value at the taken index.
Then
iter
is called again with a subset and a sum.
function findMaxScore(array) {
function iter(array, sum) {
if (!array.length) {
max = Math.max(max, sum);
return;
}
array.forEach((v, i, a) =>
iter(
array.filter((w, j) => w !== a[i - 1] && w !== a[i + 1] && i !== j),
sum + v
)
);
}
var max = 0;
iter(array.filter(v => Number.isInteger(v) && v > 0), 0);
return max;
}
console.log("result one: " + findMaxScore([0, 1, 1, 5, 1, 1]) + ", expected value 6");//1+5
console.log("result two: " + findMaxScore([1, 1, 1, 1, 1, 1, 1, 14, 1, 1]) + ", expected value 14");//1+14
console.log("result three: " + findMaxScore([-3, -7, 3, 2, 3, 4, 3, 0]) + ", expected value 9");//expected 9 3+3+3
console.log("result four: " + findMaxScore([-1, -7, -9]) + ", expected value 0");//expected 0
console.log("result five: " + findMaxScore([0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) + ", expected value 30");//expected 30 10+8+6+4+2
关于javascript - 使用带有扭曲的javascript找到最大总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55425908/
以下代码在2端口上监听,当有消息时修改全局dict对象。并且有一个计时器也会修改字典。 d = {} class x(Protocol): def dataReceived(self, dat
Twisted 怎么样?知道函数应该以异步方式执行吗? 异步函数应该返回一个带有call-/errbacks的Deferred(immeadiately),当收到“异步”数据时将被调用。接收到的数据作
我扭曲了服务器。它与插件一起运行。我想根据请求为每个条目编写唯一的前缀。 这意味着当user1发出请求时,它将生成一个唯一的字符串,该字符串将以日志记录为前缀(仅用于此请求)。当user2发出请求时,
我正在使用校准的立体声对进行稀疏重建。这是我一步一步采取的方法: 1- 我使用 MATLAB 中的立体相机校准器应用程序校准了我的立体相机。 2-我拍摄了一对立体图像,并对每个图像进行了不失真处理。
我关注了这个tutorial但我不知道如何从服务器获取响应数据。 class Service(Resource): def render_POST(self, request):
我的网站上有一个页面,它从数据库中获取大量图像并将它们放在一个网格中。 图像的形状和大小各不相同。 我想要做的是显示图像,每个图像都具有相同的宽度和高度,但不会扭曲。 现在我的CSS是 .image{
我正在尝试创建一个简单的代金券程序。 客户端连接到服务器并询问凭证上是否还有时间,如果是,服务器会响应多少时间。 我控制服务器和客户端,客户端也由我编写代码。 现在这就是我的服务器端,客户端是不言自明
假设我通过 TCP 连接快速接收数据。我必须对其进行某种处理。因为我不想阻塞 react 器线程,所以我将处理卸载到后台线程。 数据到达的速度超过了我处理它的速度。如果我将数据放入队列中,队列会无限增
我有一个简单的客户端,它向服务器发送请求并接收响应: from StringIO import StringIO from twisted.internet import reactor fro
我目前正在使用 python/twisted 构建一个 http 服务器。 该服务器必须在另一个 Web 服务器上获取内容,将其存储在本地并将响应发送回客户端。如果遇到 404,它必须尝试提供本地文件
我有一个扭曲的 react 堆监听传入的数据。我有第二个 react 器在特定时间间隔执行 http 请求,将结果发送到第一个 react 器。两者都运行良好。 现在我想把它放在一起在一个 react
我正在尝试使用 ImageMagick 的透视 功能。我看过这些例子,但我无法理解值对应的是什么。我有这段代码: var stream = new MemoryStream(); using (Mag
我有一个应用程序的想法,该应用程序采用每个角落有四个正方形的打印页面,并允许您在至少有两个正方形可见的情况下测量纸上的对象。我希望能够让用户从不太完美的角度拍照,但仍能准确测量物体。 由于我在该领域缺
我试图让用户在文本框中输入文本,并让程序生成所有可能的组合,但最少 3 个字符和最多 6 个字符除外。我不需要像 ' 这样的无用词as'、'a'、'i'、'to' 等弄乱了我的阵列。我还将根据字典检查
给定一个包含 +ve 和 -ve 整数的数组,找出不允许跳过 2 个连续元素的最大总和(即,您必须至少选择其中一个才能向前移动)。 例如:- 10、20、30、-10、-50、40、-50、-1、-3
什么时候应该使用 twisted.python.failure.Failure,什么时候应该使用 twisted.internet.error.ConnectionDone?或者我应该做 twiste
在 Twisted 中有 1 天的经验,我尝试安排消息发送以回复 tcp 客户端: import os, sys, time from twisted.internet import protocol
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
更新:为了便于阅读,这里是如何在 react 器关闭之前添加回调: reactor.addSystemEventTrigger('before', 'shutdown', callable) 原始问题
所以我已经查看了一些涉及使用 python 和 Twisted 框架编写 HTTP 代理的事情。 基本上,就像其他一些问题一样,我希望能够修改将发送回浏览器的数据。也就是说,浏览器请求资源,代理将获取
我是一名优秀的程序员,十分优秀!