956. Tallest Billboard
Вы устанавливаете рекламный щит и хотите, чтобы он имел наибольшую высоту. У рекламного щита будет две стальные опоры, по одной с каждой стороны. Каждая стальная опора должна быть одинаковой высоты. Вам дается набор стержней, которые можно сварить вместе. НаVí dụ, если у вас есть стержни длиной 1, 2 и 3, вы можете сварить их вместе, чтобы получилась опора длиной 6. return наибольшую возможную высоту вашей рекламной установки. Если вы не можете установить рекламный щит, return 0.
Ví dụ:
Input: rods = [1,2,3,6]
Output: 6
C# lời giải
đã khớp/gốcpublic class Solution {
public int MinDeletionSize(string[] strs) {
int n = strs.Length;
int m = strs[0].Length;
bool[] deleteCount = new bool[m];
bool IsSorted() {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < m; j++) {
if (deleteCount[j]) continue;
if (strs[i][j] > strs[i + 1][j]) return false;
if (strs[i][j] < strs[i + 1][j]) break;
}
}
return true;
}
while (!IsSorted()) {
for (int j = 0; j < m; j++) {
if (deleteCount[j]) continue;
for (int i = 0; i < n - 1; i++) {
if (strs[i][j] > strs[i + 1][j]) {
deleteCount[j] = true;
break;
}
}
if (deleteCount[j]) break;
}
}
int count = 0;
foreach (bool del in deleteCount) {
if (del) count++;
}
return count;
}
}
C++ lời giải
bản nháp tự động, xem lại trước khi gửi#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int MinDeletionSize(vector<string> strs) {
int n = strs.size();
int m = strs[0].size();
bool[] deleteCount = new bool[m];
bool IsSorted() {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < m; j++) {
if (deleteCount[j]) continue;
if (strs[i][j] > strs[i + 1][j]) return false;
if (strs[i][j] < strs[i + 1][j]) break;
}
}
return true;
}
while (!IsSorted()) {
for (int j = 0; j < m; j++) {
if (deleteCount[j]) continue;
for (int i = 0; i < n - 1; i++) {
if (strs[i][j] > strs[i + 1][j]) {
deleteCount[j] = true;
break;
}
}
if (deleteCount[j]) break;
}
}
int count = 0;
foreach (bool del in deleteCount) {
if (del) count++;
}
return count;
}
}
Java lời giải
đã khớp/gốcclass Solution {
public int minDeletionSize(String[] strs) {
int n = strs.length;
int m = strs[0].length();
boolean[] deleteCount = new boolean[m];
while (!isSorted(strs, deleteCount)) {
for (int j = 0; j < m; j++) {
if (deleteCount[j]) continue;
for (int i = 0; i < n - 1; i++) {
if (strs[i].charAt(j) > strs[i + 1].charAt(j)) {
deleteCount[j] = true;
break;
}
}
if (deleteCount[j]) break;
}
}
int count = 0;
for (boolean del : deleteCount) {
if (del) count++;
}
return count;
}
private boolean isSorted(String[] strs, boolean[] deleteCount) {
int n = strs.length;
int m = deleteCount.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < m; j++) {
if (deleteCount[j]) continue;
if (strs[i].charAt(j) > strs[i + 1].charAt(j)) return false;
if (strs[i].charAt(j) < strs[i + 1].charAt(j)) break;
}
}
return true;
}
}
JavaScript lời giải
đã khớp/gốcvar minDeletionSize = function(strs) {
const n = strs.length;
const m = strs[0].length;
const deleteCount = new Array(m).fill(false);
const isSorted = () => {
for (let i = 0; i < n - 1; i++) {
for (let j = 0; j < m; j++) {
if (deleteCount[j]) continue;
if (strs[i][j] > strs[i + 1][j]) return false;
if (strs[i][j] < strs[i + 1][j]) break;
}
}
return true;
};
while (!isSorted()) {
for (let j = 0; j < m; j++) {
if (deleteCount[j]) continue;
for (let i = 0; i < n - 1; i++) {
if (strs[i][j] > strs[i + 1][j]) {
deleteCount[j] = true;
break;
}
}
if (deleteCount[j]) break;
}
}
return deleteCount.filter(Boolean).length;
};
Python lời giải
đã khớp/gốcdef minDeletionSize(strs):
n = len(strs)
m = len(strs[0])
delete_count = [False] * m
def is_sorted():
for i in range(n - 1):
for j in range(m):
if delete_count[j]:
continue
if strs[i][j] > strs[i + 1][j]:
return False
if strs[i][j] < strs[i + 1][j]:
break
return True
while not is_sorted():
for j in range(m):
if delete_count[j]:
continue
for i in range(n - 1):
if strs[i][j] > strs[i + 1][j]:
delete_count[j] = True
break
if delete_count[j]:
break
return sum(delete_count)
Algorithm
Определить количество строк n и длину каждой строки m.
Создать mảng delete_count длиной m, который будет отслеживать количество удаляемых столбцов.
Итеративно проверить каждую пару соседних строк для всех столбцов.
Если для данной пары строк обнаружено нарушение лексикоđồ thịического порядка, отметить соответствующий столбец для удаления.
Повторять процесс до тех пор, пока mảng строк не станет лексикоđồ thịически отсортированным.
Вернуть количество удаленных столбцов.
😎
Vacancies for this task
việc làm đang hoạt động with overlapping task tags are đã hiển thị.