当前位置:网站首页>Journal quotidien des questions (11)
Journal quotidien des questions (11)
2022-07-03 06:37:00 【Melon hami unique】
Catalogue des articles
- Première question: Un doigt d'épée. Offer II 005. Produit maximal de la longueur du mot
- Deuxième question: Un doigt d'épée. Offer II 007. Tableau neutre 0 Trois de
- Question n° 3: Un doigt d'épée. Offer II 008. Et supérieur ou égal à target Sous - Tableau le plus court de
- Question n° 4: Un doigt d'épée. Offer II 009. Produit inférieur à K Un sous - tableau de
- Question 5: Un doigt d'épée. Offer II 010. Et pour k Un sous - tableau de
- Question 6: Un doigt d'épée. Offer II 011. 0 Et 1 Même nombre de sous - tableaux
Première question: Un doigt d'épée. Offer II 005. Produit maximal de la longueur du mot
LeetCode: Un doigt d'épée. Offer II 005. Produit maximal de la longueur du mot
Description:
Avec un tableau de chaînes words,S'il vous plaît calculer quand deux chaînes words[i] Et words[j] Sans les mêmes caractères,La valeur maximale du produit de leur longueur.Supposons que la chaîne ne contienne que des minuscules lettres anglaises.S'il n'y a pas une paire de chaînes qui ne contiennent pas les mêmes caractères,Retour 0.
Comment résoudre le problème:
- La longueur utilisée ici est
words.lengthTableau deretPour enregistrer chaque word Format de chaîne à binaire pour .
Par exemple:ac===>101;ad===>1001;bd===>1010- Méthode de mise en œuvre de la conversion de chaîne en binaire , C'est traverser chaque caractère , Jean
ret[i] |= (1<<words[i].charAt(j)), Ça veut dire...: Le caractère actuel apparaît , Notez donc le bit correspondant sous forme binaire , Parce que les caractères sonta~z26- Oui., De droite à gauche, Tant qu'il y en a.1, Cela signifie que l'élément courant apparaît .- Traversée, Deux.
AvecOpération, Tant que le résultat est égal à 0 , Cela signifie que les deux ne contiennent pas les mêmes éléments . En ce moment, Enregistrer le produit de longueur des deux plus grandes chaînes sans le même élément .
Mise en œuvre du Code:
class Solution {
public int maxProduct(String[] words) {
int[] ret = new int[words.length];
for(int i = 0; i < words.length; i++) {
for(int j = 0; j < words[i].length(); j++) {
// Tant que ce caractère apparaît , Changez cette position en 1
ret[i] = ret[i] | (1 << (words[i].charAt(j) - 'a'));
}
}
int ans = 0;
for(int i = 0; i < words.length-1; i++) {
for(int j = i + 1; j < words.length; j++) {
// Deux paires et l'opération
if((ret[i] & ret[j]) == 0) {
// Enregistrer le produit maximum
ans = Math.max(ans, words[i].length() * words[j].length());
}
}
}
return ans;
}
}
Deuxième question: Un doigt d'épée. Offer II 007. Tableau neutre 0 Trois de
LeetCode: Un doigt d'épée. Offer II 007. Tableau neutre 0 Trois de
Description:
Compte tenu d'un contenant n Un tableau d'entiers nums,Jugement nums Y a - t - il trois éléments dans a ,b ,c ,De faire a + b + c = 0 ?Veuillez trouver tous les 0 Et Pas de répétition Triplet de.
Comment résoudre le problème:
- Trier d'abord,
- Prenez d'abord le i - Oui. Élément, Jeanleft = i+1, right = len - 1;
- Des éléments restants , Prends - le., Tant que
nums[left] + nums[right] == targetPrends ça.3 Éléments placés dans l'ensemble de résultats , Attention ici, Après l'adhésion, Pour le moment leftValeur de l'indice Et right La valeur de l'indice est effacée , Pour éviter les ajouts répétés- Attention à chaque fois que vous prenez un élément , Quand
i > 0Quand. Attention à prendre les mêmes éléments à plusieurs reprises .nums[i] = nums[i-1]
Mise en œuvre du Code:
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
// Trier
Arrays.sort(nums);
List<List<Integer>> ans = new ArrayList<>();
for (int i = 0; i < nums.length - 2;i++) {
// Ceci empêche la prise répétée des mêmes éléments
if(i != 0 && nums[i] == nums[i-1]) continue;
// Parce que je l'ai.nums[i] Pour ajouter 0, Il faut trouver et -nums[i]De
int target = -nums[i];
int left = i + 1;
int right = nums.length-1;
while (left < right) {
if (nums[left] + nums[right] == target) {
// Voici le nombre de deux indices qui répondent aux exigences , Ajoutez ces trois éléments à l'ensemble
List<Integer> ret = new ArrayList<>();
ret.add(nums[i]);
ret.add(nums[left]);
ret.add(nums[right]);
ans.add(ret);
// Ici, pour prévenir leftEtright Répétez sous l'indice pour obtenir la même valeur , Pour enlever le poids
int tmp = nums[left];
while (left < right && nums[left] == tmp){
left++;
}
tmp = nums[right];
while (left < right && nums[right] == tmp) {
right--;
}
}else if (nums[left] + nums[right] < target) {
left++;
}else {
right--;
}
}
}
return ans;
}
}
Question n° 3: Un doigt d'épée. Offer II 008. Et supérieur ou égal à target Sous - Tableau le plus court de
LeetCode: Un doigt d'épée. Offer II 008. Et supérieur ou égal à target Sous - Tableau le plus court de
Description:
Compte tenu d'un contenant n Un tableau d'entiers positifs et un entier positif target .
Trouvez dans ce tableau la somme de ≥ target La plus petite longueur de Sous - tableaux consécutifs [numsl, numsl+1, ..., numsr-1, numsr] ,Et renvoie sa longueur.Si aucun sous - Tableau admissible n'existe,Retour 0 .
Comment résoudre le problème:
- La méthode de la fenêtre coulissante est utilisée ici
- Jeanleft = 0, right =0, La taille initiale de la fenêtre est 0
- Avec total Enregistrement nums[right] Valeur de. Juge le courant total Et targetValeur
- Si actuellement
total >= target, Enregistrer le courant Distance de l'indice ( En fin de compte, seul le plus petit ) , À ce stade,total -= nums[left],left++,- Chaque fois que la boucle fait
right++- La taille de la fenêtre coulissante reste toujours
[left,right]- Renvoie la distance minimale de l'indice
Mise en œuvre du Code:
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int start = 0;
int end = 0;
int ans = Integer.MAX_VALUE;
int total = 0;
// La taille est [start,end] Fenêtre coulissante pour
while (end < nums.length) {
total += nums[end];
while (total >= target) {
ans = Math.min(ans, end-start+1);
total -= nums[start];
start++;
}
end++;
}
return ans==Integer.MAX_VALUE?0:ans;
}
}
Question n° 4: Un doigt d'épée. Offer II 009. Produit inférieur à K Un sous - tableau de
LeetCode: Un doigt d'épée. Offer II 009. Produit inférieur à K Un sous - tableau de
Description:
Compte tenu d'un tableau entier positif numsEt entier k ,Veuillez trouver le produit dans ce tableau inférieur à k Nombre de sous - tableaux consécutifs de.
Comment résoudre le problème:
- Utilisez la fenêtre coulissante pour résoudre le problème
- Chaque fois que le produit courant est enregistré
ret *= nums[j], Déterminer si elle est supérieure àk
- Si c'est plus grand que k, Laissez la limite gauche de la fenêtre se déplacer (i++), Enregistrer l'indice actuel
- Renvoie tous les temps possibles
Mise en œuvre du Code:
class Solution {
public int numSubarrayProductLessThanK(int[] nums, int k) {
int i = 0;
int ret = 1;
int ans = 0;
// Fenêtre coulissante [i,j]
for (int j = 0; j < nums.length; j++) {
ret *= nums[j];
while(i <= j && ret >= k) {
ret /= nums[i];
i++;
}
// Cette méthode est utilisée ici pour calculer et éviter les doubles comptages
ans += j - i + 1;
}
return ans;
}
}
Question 5: Un doigt d'épée. Offer II 010. Et pour k Un sous - tableau de
LeetCode: Un doigt d'épée. Offer II 010. Et pour k Un sous - tableau de
Description:
Compte tenu d'un tableau entier et d'un entier k ,S'il vous plaît trouver le tableau neutre avec k Nombre de sous - tableaux consécutifs de.
Comment résoudre le problème:
- Utilisez la table de hachage ici , Notez les valeurs actuelles et ret.
- Jugement Si l'élément existe
ret-k, Et ça s'additionne pour k, Enregistrer la présence actuelle valueValeur- Attention ici k = nums[i] Situation, Doit être ajouté à l'avance 0Situation.
Mise en œuvre du Code:
class Solution {
public int subarraySum(int[] nums, int k) {
Map<Integer,Integer> map = new HashMap<>();
int ans = 0;
map.put(0,1);
int ret = 0;
for(int i = 0; i < nums.length; i++) {
ret += nums[i];
if (map.containsKey(ret - k)) {
ans += map.get(ret - k);
}
map.put(ret,map.getOrDefault(ret,0)+1);
}
return ans;
}
}
Question 6: Un doigt d'épée. Offer II 011. 0 Et 1 Même nombre de sous - tableaux
LeetCode: Un doigt d'épée. Offer II 011. 0 Et 1 Même nombre de sous - tableaux
Description:
Compte tenu d'un tableau binaire nums , Trouvé avec la même quantité de 0 Et 1 Sous - Tableau continu le plus long de,Et renvoie la longueur du sous - Tableau.
Comment résoudre le problème:
- Tout d'abord, laissez tout dans le tableau être 0L'élément de-1, Il suffit de juger si l'addition est 0, On le saura.0Et1 Est - ce que le nombre de .
- Si l'élément courant n'existe pas dans la table de hachage , Ajouter à la table de hachage ,value La valeur est l'indice courant
- Si l'élément courant existe dans la table de hachage , Enregistrer l'écart maximal actuel de l'indice
Mise en œuvre du Code:
class Solution {
public int findMaxLength(int[] nums) {
for(int i = 0; i < nums.length; i++) {
if(nums[i] == 0) nums[i] = -1;
}
Map<Integer,Integer> map = new HashMap<>();
map.put(0,-1);
int ans = 0;
int target = 0;
for(int i = 0; i < nums.length; i++) {
target += nums[i];
if (map.containsKey(target)) {
ans = Math.max(ans,i-map.get(target));
}else {
map.put(target,i);
}
}
return ans;
}
}
边栏推荐
- Shell conditional statement
- Ruoyi interface permission verification
- Selenium ide installation recording and local project maintenance
- ROS+Pytorch的联合使用示例(语义分割)
- YOLOV3学习笔记
- Code management tools
- Click cesium to obtain three-dimensional coordinates (longitude, latitude and elevation)
- 数值法求解最优控制问题(一)——梯度法
- 论文笔记 VSALM 文献综述《A Comprehensive Survey of Visual SLAM Algorithms》
- Create your own deep learning environment with CONDA
猜你喜欢

Summary of the design and implementation of the weapon system similar to the paladin of vitality

Chapter 8. MapReduce production experience

Reinstalling the system displays "setup is applying system settings" stationary

Kubesphere - set up redis cluster

Zhiniu stock project -- 05

Fluentd facile à utiliser avec le marché des plug - ins rainbond pour une collecte de journaux plus rapide

Project summary --04

2022 cisp-pte (III) command execution

Paper notes vsalm literature review "a comprehensive survey of visual slam algorithms"

23 design models
随机推荐
论文笔记 VSALM 文献综述《A Comprehensive Survey of Visual SLAM Algorithms》
. Net program configuration file operation (INI, CFG, config)
Kubesphere - build Nacos cluster
2022 CISP-PTE(三)命令执行
The mechanical hard disk is connected to the computer through USB and cannot be displayed
Svn branch management
The list of "I'm crazy about open source" was released in the first week, with 160 developers on the list
使用conda创建自己的深度学习环境
[set theory] equivalence relation (concept of equivalence relation | examples of equivalence relation | equivalence relation and closure)
Oracle Database Introduction
[C /vb.net] convert PDF to svg/image, svg/image to PDF
Yolov2 learning and summary
简易密码锁
How matlab modifies default settings
机械观和系统观的科学思维方式各有什么特点和作用
学习笔记 -- k-d tree 和 ikd-Tree 原理及对比
Advanced technology management - do you know the whole picture of growth?
卡特兰数(Catalan)的应用场景
表达式的动态解析和计算,Flee用起来真香
Floating menu operation
