215. Kth Largest Element in an Array
leetcode medium
#array#backtracking#csharp#leetcode#medium#sort#string#tree
Task
Дан целочисленный массив nums и целое число k. Верните k-й наибольший элемент в массиве.
Обратите внимание, что это k-й наибольший элемент в отсортированном порядке, а не k-й уникальный элемент.
Пример:
Input: nums = [3,2,3,1,2,4,5,5,6], k = 4
Output: 4
C# solution
matched/originalpublic class Solution {
public string ShortestPalindrome(string s) {
int n = s.Length;
char[] revArray = s.ToCharArray();
Array.Reverse(revArray);
string rev = new string(revArray);
for (int i = 0; i < n; i++) {
if (s.Substring(0, n - i) == rev.Substring(i)) {
return rev.Substring(0, i) + s;
}
}
return "";
}
}C++ solution
auto-draft, review before submit#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 string ShortestPalindrome(string s) {
int n = s.size();
char[] revArray = s.ToCharArray();
Array.Reverse(revArray);
string rev = new string(revArray);
for (int i = 0; i < n; i++) {
if (s.Substring(0, n - i) == rev.Substring(i)) {
return rev.Substring(0, i) + s;
}
}
return "";
}
}Java solution
matched/originalclass Solution {
public String shortestPalindrome(String s) {
int n = s.length();
String rev = new StringBuilder(s).reverse().toString();
for (int i = 0; i < n; i++) {
if (s.substring(0, n - i).equals(rev.substring(i))) {
return rev.substring(0, i) + s;
}
}
return "";
}
}JavaScript solution
matched/originalclass Solution {
shortestPalindrome(s) {
const n = s.length;
const rev = s.split('').reverse().join('');
for (let i = 0; i < n; i++) {
if (s.substring(0, n - i) === rev.substring(i)) {
return rev.substring(0, i) + s;
}
}
return "";
}
}Go solution
matched/originalpackage main
import (
"strings"
)
func shortestPalindrome(s string) string {
n := len(s)
rev := reverseString(s)
for i := 0; i < n; i++ {
if s[:n-i] == rev[i:] {
return rev[:i] + s
}
}
return ""
}
func reverseString(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}Explanation
Algorithm
1️⃣
Отсортируйте массив в порядке убывания:
Используйте стандартную функцию сортировки для сортировки элементов массива nums в порядке убывания. В этом случае самый большой элемент будет первым в массиве, второй по величине - вторым и так далее.
2️⃣
Найдите k-й по величине элемент:
После сортировки просто верните элемент, который стоит на позиции k-1 (учитывая, что индексация в массиве начинается с 0).
3️⃣
Верните результат:
Возвратите найденное значение как результат.
😎