Introduction à l'algorithme simple 06 - - leetcode 34. Trouver la première et la dernière position d'un élément dans un tableau de tri

Où est le héros? 2021-10-14 01:09:38
introduction algorithme simple leetcode trouver


Un.、Titre

1、Description du sujet

Compte tenu d'un tableau entier dans l'ordre croissant nums,Et une valeur cible target.Trouver la position de départ et de fin d'une valeur cible donnée dans le tableau.Si la valeur cible n'existe pas dans le tableau target,Retour [-1, -1].
Exemple d'entrée: nums = [5,7,7,8,8,10], target = 8
Exemple de sortie: [3,4]

2、Cadre de base

  • CLangues La version donne les codes - cadres de base suivants:
int* searchRange(int* nums, int numsSize, int target, int* returnSize){
}

3、Lien vers la question originale

LeetCode 34. Trouver la première et la dernière position de l'élément dans le tableau de tri

2.、Rapport de résolution de problèmes

1、Analyse des idées

Tableau de partition, ≥ t a r g e t \ge target target Le nombre est vert , Le reste est rouge . Deux minutes pour trouver la frontière verte , Si la limite verte n'est pas égale à n n n Et La valeur de la position correspondante est égale à t a r g e t target target, Continue à chercher. ≥ t a r g e t + 1 \ge target+1 target+1 La limite rouge de ( C'est - à - dire la limite verte moins un ), Retourner aux deux limites est la réponse ;Sinon,Retour [ − 1 , − 1 ] [-1, -1] [1,1].

2、Complexité temporelle

La complexité temporelle totale est O ( l o g 2 n ) O(log_2n) O(log2n).

3、Détails du Code


/************** Recherche binaire Tableau Modèle **************/
/* 1)Le tableau des paramètres de transfert satisfait:Rouge rouge rouge rouge rouge rouge vert Vert Vert Vert; 2)Valeur de retour:Limite gauche de la section verte; */
int isGreen(int val, int x);
int binarySearch(int *arr, int arrSize, int x) {

int l = -1, r = arrSize;
int mid;
while(l + 1 < r) {

mid = l + (r - l) / 2;
if( isGreen(arr[mid], x) )
r = mid;
else
l = mid;
}
return r;
}
/************** Recherche binaire Tableau Modèle **************/
int isGreen(int val, int x) {

return val >= x;
}
int* searchRange(int* nums, int numsSize, int target, int* returnSize){

int l, r;
int *ret = (int *)malloc( sizeof(int) * 2 );
*returnSize = 2;
l = binarySearch(nums, numsSize, target); // (1)
if(l == numsSize || nums[l] != target) {
 // (2)
ret[0] = ret[1] = -1;
return ret;
}
r = binarySearch(nums, numsSize, target+1) - 1; // (3)
ret[0] = l;
ret[1] = r;
return ret;
}
  • ( 1 ) (1) (1) Trouver plus ou moins t a r g e t target target Indice minimal de ;
  • ( 2 ) (2) (2) Rien trouvé , Retour direct à deux -1;
  • ( 3 ) (3) (3) Trouver plus ou moins t a r g e t + 1 target+1 target+1 Indice minimal de ,Moins1 C'est la limite droite ;

Trois、Petite connaissance de ce sujet

Les tableaux ordonnés sont généralement préférés Recherche binaire.


Quatre、Instructions pour l'ajout de groupes

Je crois que la plupart de mes articles sont「 Étudiants 」,Tous ceux qui peuvent aller à l'Université sont「 Elite 」,Alors naturellement, nous devons「 L'excellence 」,Si vous êtes toujours「 Première année 」,C'est super,Tu as beaucoup de temps,Bien sûr que tu as le choix.「 Drama de brosse 」,Et pourtant,「 Apprendre les algorithmes 」,Trois ans plus tard, vous serez naturellement「 On ne peut pas parler en même temps 」.
Alors, ici.,J'ai rangé「 Des dizaines d'algorithmes de base 」 Classification de,Cliquez pour ouvrir:

Guide de démarrage de l'algorithme

Si le lien est masqué,Ou avoir des problèmes de permission,On peut parler à l'auteur.

Aperçu de l'ensemble de questions:


Insérer la description de l'image ici


Pour rendre ça intéressant,Et「 Prendre soin des débutants 」,À l'heure actuelle, seuls les algorithmes les plus simples sont ouverts 「 Série ENUM 」 (Y compris::énumération linéaire、Double pointeur、Préfixe et、Dénombrement binaire、Dénombrement trigonométrique),Oui. La moitié des membres ont fini. 「 Série ENUM 」 Après toutes les questions,Ouvre le chapitre suivant,Quand tout sera fini.,Tu es toujours dans le Groupe.,Alors tu seras「 .Algorithme d'écriture silencieuse tard dans la nuit 」Groupe d & apos; experts Un membre de.
Ne sous - estimez pas ce groupe d'experts,Trois ans plus tard,Tu seras quelqu'un d'autre. C'est impossible. L'existence de.Si vous voulez rejoindre,Vous pouvez me contacter,Vu que tout le monde est étudiant, Non.「 Principales sources économiques 」,Sur le chemin de devenir Dieu,「 Je ne demande rien. 」.
Contacter l'auteur,Ou scanner la page d'accueil de l'auteur Code QR plus Groupe,Joignez - vous à nous.


Il n'y a pas d'algorithmes difficiles à apprendre

CTutoriels d'animation gratuits en langue,Frappe avec moi!
La photoastronomieCLangues

Niveau d'entréeCRésumé des vrais problèmes linguistiques
🧡《CIntroduction à la langue100Exemple》🧡

Quelques diagrammes apprennent une structure de données
Dessiner la structure des données

Apprentissage en groupe,Croissance de la masse
Guide de démarrage de l'algorithme

Tutoriel d'images et de textes de la médaille d'or du concurrent
.Algorithme d'écriture silencieuse tard dans la nuit
版权声明
本文为[Où est le héros?]所创,转载请带上原文链接,感谢
https://qdmana.com/2021/10/20211014010934438U.html

  1. PaddlePaddle:在 Serverless 架构上十几行代码实现 OCR 能力
  2. JavaScript数组 几个常用方法
  3. 暢談this的四種綁定方式
  4. 2021最新Vue面试必胜宝典,大厂面试题解析!
  5. Quatre façons de lier ceci
  6. Préparation au développement de l'extension tagdown
  7. Intervieweur: Parlez - moi des flotteurs CSS
  8. Packaging the View Component Library with rollup
  9. Comment un composant enfant modifie les valeurs passées par le composant parent
  10. Résumé de l'API Express
  11. Optimisation de la structure du Code if else dans le projet
  12. Fonction magique pour résoudre le problème de la fonction maybe - - fonction either
  13. 新手学前端的方法是什么 自学前端该怎么规划
  14. 云原生体系下 Serverless 弹性探索与实践
  15. 如何全方位打造安全高效的HTTPS站点(一)
  16. "Liu Jing dit che 丨 point de vue" est - ce que Custom Road est un MpV digne de la terre?
  17. 从理念到LRU算法实现,起底未来React异步开发方式
  18. Compared with Volvo XC60, Lingke 09 goes out of the spa platform. What would you choose, regardless of the brand?
  19. PaddlePaddle:在 Serverless 架构上十几行代码实现 OCR 能力
  20. 云原生体系下 Serverless 弹性探索与实践
  21. 初学者怎么学Web前端?
  22. react
  23. PaddlePaddle:在 Serverless 架构上十几行代码实现 OCR 能力
  24. JavaScript数组 几个常用方法
  25. Angular 依赖注入 - 全面解析
  26. html_day02
  27. 那些年我们前端面试中经常被问到的题!
  28. The starting price of Ducati multistada V2 in North America is less than 100000 yuan
  29. Hls.js 使用文檔
  30. Hls.js travailler avec des documents
  31. Problèmes liés à la précision JS
  32. Copie une partie des propriétés d'un objet à un autre objet
  33. Multiplexage de modules en vuex
  34. Développement multilingue Android, questions d'entrevue pour le développement de logiciels Android
  35. Chen lushai and her best friend Wang Meng play video, fearless of the pressure of public opinion, and in a good mood to dance in a bare back
  36. # Sass速通(四):继承、混合与函数
  37. Vidéo de développement de combat Android, questions d'entrevue rxjava
  38. Bugatti Chiron maintenance cost exposure! One piece for one car, burn money endlessly
  39. android应用开发基础答案,深入理解Nginx
  40. 做了三年前端,你才知道10分钟就能实现一个PC版魔方游戏
  41. Html + CSS + JS implémentation ️ Responsive Lucky Turnover ️ [with full source Sharing]
  42. Ren Jialun, who married young, was in a mess. Now she feels that it is a blessing in disguise
  43. 达梦数据库使用disql生成html格式的巡检报告
  44. React render phase parsing II - beginwork process
  45. Tableau linéaire de la structure des données (dessin à la main)
  46. In 2022, what are the highlights and popular elements in skirts to make skirts more elegant and gentle?
  47. JQuery installation
  48. Exemple de développement Android, dernière compilation de questions d'entrevue Android
  49. Differences and relations between JDK, JRE and JVM, nginx architecture diagram
  50. 【Azure 云服务】Azure Cloud Service 为 Web Role(IIS Host)增加自定义字段 (把HTTP Request Header中的User-Agent字段增加到IIS输出日志中)
  51. 【Azure 云服务】Azure Cloud Service 为 Web Role(IIS Host)增加自定义字段 (把HTTP Request Header中的User-Agent字段增加到IIS输出日志中)
  52. Questions d'entrevue pour les ingénieurs en développement Android, Android Foundation 72 questions
  53. It's kind of Cadillac CT6 to have a Mercedes Benz S-class captain and a 10At entry-level configuration, falling to less than 300000
  54. H6 meets the strong enemy again! The car body has a Cayenne visual sense, breaking 8.8 seconds, and the top configuration is less than 130000
  55. How nginx supports HTTPS and Linux kernel video tutorial
  56. Le martyr se réjouit de sa vieillesse Audi R8 V10 performance Rwd
  57. import 方式隨意互轉,感受 babel 插件的威力
  58. Le mode d'importation peut se déplacer librement pour sentir la puissance du plug - in Babel
  59. Pas de héros en termes de ventes!Du point de vue de la force du produit, la nouvelle version ax7 Mach est plus forte que H6
  60. The vue3 + TS project introduces vant as needed