当前位置:网站首页>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.length
Tableau deret
Pour 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~z
26- Oui., De droite à gauche, Tant qu'il y en a.1, Cela signifie que l'élément courant apparaît .- Traversée, Deux.
Avec
Opé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] == target
Prends ç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 > 0
Quand. 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 nums
Et 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;
}
}
边栏推荐
- Use selenium to climb the annual box office of Yien
- Push box games C #
- (翻译)异步编程:Async/Await在ASP.NET中的介绍
- Project summary --01 (addition, deletion, modification and query of interfaces; use of multithreading)
- 2022 cisp-pte (III) command execution
- . Net program configuration file operation (INI, CFG, config)
- Yolov3 learning notes
- How to scan when Canon c3120l is a network shared printer
- 2022 CISP-PTE(三)命令执行
- Mysql database binlog log enable record
猜你喜欢
IE browser flash back, automatically open edge browser
Svn branch management
Selenium - by changing the window size, the width, height and length of different models will be different
[system design] proximity service
Paper notes vsalm literature review "a comprehensive survey of visual slam algorithms"
Mysql
vmware虚拟机C盘扩容
“我为开源打榜狂”第一周榜单公布,160位开发者上榜
. Net program configuration file operation (INI, CFG, config)
Summary of the design and implementation of the weapon system similar to the paladin of vitality
随机推荐
Simple understanding of ThreadLocal
Scroll view specifies the starting position of the scrolling element
scroll-view指定滚动元素的起始位置
100000 bonus is divided up. Come and meet the "sister who braves the wind and waves" among the winners
SQL实现将多行记录合并成一行
Selenium - 改变窗口大小,不同机型呈现的宽高长度会不一样
机械观和系统观的科学思维方式各有什么特点和作用
【code】偶尔取值、判空、查表、验证等
Support vector machine for machine learning
Operation principle of lua on C: Foundation
JMeter performance automation test
【5G NR】UE注册流程
Chapter 8. MapReduce production experience
Reinstalling the system displays "setup is applying system settings" stationary
Judge whether the date time exceeds 31 days
[set theory] relational closure (relational closure solution | relational graph closure | relational matrix closure | closure operation and relational properties | closure compound operation)
Various usages of MySQL backup database to create table select and how many days are left
Oracle database synonym creation
Know flex box
In depth analysis of kubernetes controller runtime