두 서브 어레이로 배열 고려 어레이 A : I는 4 개소에서이 배열을 분할 할 수분할 최소의 차분 절대 예
[3, 1, 2, 4, 3]
는 :
는P = 1, difference = |3 − 10| = 7
P = 2, difference = |4 − 9| = 5
P = 3, difference = |6 − 7| = 1
P = 4, difference = |10 − 3| = 7
최소 차이는 1
이고배열의 각 요소는 [-1,000..1,000] 범위의 정수입니다.
아래 코드는 내가 작성한 코드입니다. 내 코드는이 연습에 적합하며 주어진 입력에 맞지만 다른 경우에는 올바르지 않습니다. 나는 왜 그런지 이해하지 못한다.
def minimaldifference(a)
sumArr = []
sumArr = sumfromstarting(a)
sum = sumArr.last
sumRev = sumFromReverse(a, sum)
size = sumArr.size-2
min = 0
v = 0
for i in 0..size
if(i==0)
min = (sumArr[i] - sumRev[i]).abs
else
v = (sumArr[i] - sumRev[i]).abs
if(v < min)
min = v
end
end
end
min
end
def sumfromstarting(a)
sumArr = []
sum = 0
a.each do |i|
sum += i
sumArr.push(sum)
end
sumArr
end
def sumFromReverse(a, sum)
sumArr = []
rsum = 0
a.each do |i|
rsum += i
sumArr.push(sum - i)
end
sumArr
end
a = [3, 1, 2, 4, 3]
puts minimaldifference(a)
스타일과 변수 이름에 스타일을 사용하려면 camel_case를 사용해야합니다. 'sumFromReverse'는 예를 들어'sum_from_reverse'이어야합니다. 'sumArr'은'sum_arr'이어야합니다. 이것이 Ruby 방식입니다. 커뮤니티 또는 개발 팀에서 사용하는 코드를 작성하려는 경우 그 내용과 일관성을 유지하는 것이 중요합니다. 또한'sumfromstarting'은 단어를 분리하는 밑줄이 있어야합니다. 이는 가독성을 높이는 데 도움이됩니다. 또한 이름 지정 및 대문자 사용 스타일을 일관되게 유지하십시오. –
투표가 취소 된 이유를 이해하지 못합니다. 좋은 질문입니다, 문제를 푸는 시도를 보여주십시오. +1 – Darkmouse
이유를 모르겠 음. 아마도 적절한 입력 및 출력 샘플이 없기 때문이며, 특히 오류를 유발하는 원인을 보여주는 입력이 있습니까? 우리가 그것을 찾는 것은 우리 시대의 낭비입니다. –