Построить массив из перестановки
Ввод: nums = [5,0,1,2,3,4] Вывод: [4,5,0,1,2,3] Объяснение: Массив ans строится следующим образом: ans = [nums[nums[0] ]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]] = [nums[5], числа [0], числа [1], числа [2], числа [3], числа [4]] = [4,5,0,1,2,3]
Решение: сохраняет nums[i]=nums[nums[i]]
Логика для хранения 2 разных значений в одном индексе
x=a+bn (4 и 5 в массиве размером 7)
4 +5*7=39, 39%7=a, 39/5=b
(Когда ‹n)
JAVA-решение:
int n=числа.длина;
for(int i=0;i‹n;i++){
nums[i]=nums[i]+n*(nums[nums[i]]%n);
}
for(int i=0;i‹n;i++){
числа[i]=числа[i]/n;
}
вернуть числа;
Объединение массива
ЯВА-логика:
int[] ans=new int[nums.length*2];
for(int i=0;i‹nums.length;i++){
ответ [я] = числа [я];
ans[числа.длина+i]=числа[i];
}
вернуть ответ;
Текущая сумма одномерного массива
I/P: [1,2,3,4]
O/P: [1,3,6,10]
Объяснение: [1,1+2,1+2+3,1+2+3+4]
Грубая сила: использование 2 циклов for
JAVA-решение:
int[] результат= новый int[nums.length];
целая температура = 0;
for(int i=0;i‹nums.length;i++){
темп=числа[я]+темп;
результат[я]=темп;
}
вернуть результат;
Богатство самого богатого клиента
Ввод: счета = [[1,5],[7,3],[3,5]] Вывод: 10 Объяснение: 1-й покупатель имеет богатство = 6 2-й покупатель имеет богатство = 10 3-й покупатель имеет богатство = 8 2-й покупатель самый богатый с богатством 10
JAVA-решение:
интервал макссостояние=0;
//2D-массив
for(int i=0;i‹accounts.length;i++){
инт суммаКлиент = 0;
for(int j=0;j‹accounts[i].length;j++){
sumCustomer+=accounts[i][j];
}
если (maxWealth‹sumCustomer){
maxWealth= суммаКлиент;
}}
вернуть максимальное богатство;
Перетасовать массив
Ввод: nums = [2,5,1,3,4,7], n = 3 Вывод: [2,3,5,4,1,7] Объяснение: Поскольку x1=2, x2=5, x3=1 , y1=3, y2=4, y3=7, то ответ будет [2,3,5,4,1,7]
JAVA-решение:
int [] res = новый интервал [n * 2]
for(int i=0;i‹arr.length;i++){
res[i]=i%2==0?num[i/2]:num[n+(i/2)];
}
возврат рез;
Альтернатива:
решение класса {
общественное int [] перетасовать (int [] nums, int n) {
int ans[]=new int[n*2];
for(int i=0;i‹n;i++){
ответ[я+я]=числа[я];
ans[i+i+i]=числа[n+i]; }
возврат ответа;
}
}
Дети с наибольшим количеством конфет
Ввод: конфеты = [2,3,5,1,3], extraCandies = 3
Вывод: [правда, правда, правда, ложь, правда]
Объяснение: Если вы дадите все дополнительные конфеты: - Ребёнку 1, у них будет 2 + 3 = 5 конфет, что является наибольшим количеством конфет среди детей. - Малыш 2, у них будет 3+3=6 конфет, что больше всего у детей. - Малыш 3, у них будет 5+3=8 конфет, что является самым большим среди детей. - Малыш 4, у них будет 1+3=4 конфеты, что не самое большое среди детей. - Малыш 5, у них будет 3+3=6 конфет, что самое большое среди детей.
Солн:
Проверьте дополнительные конфеты, проверьте максимальное значение, если больше, напечатайте true, иначе false
class Solution {
public List‹Boolean› kidsWithCandies(int[] candies, int extraCandies) {
int max = Integer.MIN_VALUE;
for (int candy : candies) {
max = Math.max(max, candy);
}
List‹Boolean› ans = new ArrayList‹›();
for (int i = 0; i ‹ candies.length; i++) {
ans.add((candies[i] + extraCandies) ›= max);
}
return ans;
}
}