当前位置:网站首页>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;
}
}
边栏推荐
- 冒泡排序的简单理解
- Create your own deep learning environment with CONDA
- Selenium ide installation recording and local project maintenance
- PMP notes
- Summary of the design and implementation of the weapon system similar to the paladin of vitality
- Pytest attempts to execute the test case without skipping, but the case shows that it is all skipped
- Redis cluster creation, capacity expansion and capacity reduction
- Heap sort and priority queue
- 卡特兰数(Catalan)的应用场景
- Simple understanding of ThreadLocal
猜你喜欢

Project summary --01 (addition, deletion, modification and query of interfaces; use of multithreading)

2022 CISP-PTE(三)命令执行

Click cesium to obtain three-dimensional coordinates (longitude, latitude and elevation)
![[5g NR] UE registration process](/img/e3/f881d51fba03010de8c45ea480f3f0.png)
[5g NR] UE registration process

2022年华东师范大学计科考研复试机试题-详细题解

golang操作redis:写入、读取hash类型数据

SQL implementation merges multiple rows of records into one row

Chapter 8. MapReduce production experience

Example of joint use of ros+pytoch (semantic segmentation)

Time format record
随机推荐
IE browser flash back, automatically open edge browser
有意思的鼠標指針交互探究
【5G NR】UE注册流程
使用conda创建自己的深度学习环境
Shell conditional statement
“我为开源打榜狂”第一周榜单公布,160位开发者上榜
Read blog type data from mysql, Chinese garbled code - solved
UNI-APP中条件注释 实现跨段兼容、导航跳转 和 传参、组件创建使用和生命周期函数
卡特兰数(Catalan)的应用场景
Heap sort and priority queue
2022 cisp-pte (III) command execution
Use @data in Lombok to simplify entity class code
Openresty best practices
Fluentd is easy to use. Combined with the rainbow plug-in market, log collection is faster
Kubesphere - build Nacos cluster
MATLAB如何修改默认设置
The mechanical hard disk is connected to the computer through USB and cannot be displayed
After the Chrome browser is updated, lodop printing cannot be called
The dynamic analysis and calculation of expressions are really delicious for flee
堆排序和优先队列
