当前位置:网站首页>Journal des problèmes de brosse à boutons de force / day6 / 6.28
Journal des problèmes de brosse à boutons de force / day6 / 6.28
2022-07-04 18:23:00 【Bobo Clean Toilet Spirit】
Novice Village
Supprimer les éléments dupliqués d'un tableau ordonné,Aiguille à deux doigts
Cette méthode comporte deux exigences,Pour modifier sur la base du tableau original,Ne pas utiliser d'autres tableaux
Si la longueur du tableau est0;
Sortie directe
Si la longueur du tableau n'est pas0;
Définir deux pointeurs,fastEtslow,fastEtslowLa valeur initiale de1,Parce que pour comparerfastEtfast-1Éléments de
fastIndice utilisé pour traverser tous les éléments du tableau,slowUtilisé pour enregistrer le nombre d'éléments uniques
Quandfast-1EtfastLes éléments pointés ne sont pas les mêmes,Oui.fastLes éléments représentés sont donnés àslowÉléments représentés,Et va++slow,++fast
QuandfastEtfast-1Les éléments pointés sont les mêmes,++fast,slowSans changement
Par exemple, la figure ci - dessous,Quand le premier cycle commence,fast-=1,Éléments représentés0,Etfast-1Les éléments représentés sont les mêmes,En ce moment,fastContinuez à droite,slowSans changement.


fast=2Heure,L'élément pointé est1,Etfast-1Élément pointé0C'est différent.,À ce stade,fastÉlément pointé1ÀslowÉlément pointé,nums[slow]=nums[fast],Et vaslowÀ droite.,++slow,fastContinuez à droite,++fast


Continuez à avancer ......
Jusqu'àfast=9Heure(n=10,fast<n),Oui.nums[9]Valeur attribuée ànums[4],++slow=5,À ce stade,nums[slow]Produits, Est un tableau qui élimine les éléments dupliqués .
slow C'est la longueur du nouveau tableau , Est modifié sur la base du tableau original .
Exemples

Comment résoudre le problème:Comme ci - dessus
class Solution {
public int removeDuplicates(int[] nums) {
int n = nums.length;
if (n == 0) { // Déterminer si la longueur du tableau est 0
return 0;
}
int fast = 1, slow = 1; // Réglage de deux pointeurs rapides et lents
while (fast < n) { //La longueur du tableau estn, Donc l'emplacement de l'élément à la fin est n-1
if (nums[fast] != nums[fast - 1]) {
nums[slow] = nums[fast];
++slow; // Enfin, la longueur du tableau sans duplication doit être sortie ,Alors choisissez++slow
}
++fast; // Empêcher l'entrée illégale dans la boucle
}
return slow; // Renvoie la longueur du tableau sans répétition
}
}Autres idées :

foreachTraversée (for Chaque)
jdk5.0Nouvelles caractéristiques,NouveauforCycle
for(type x:type Y)
TraverséeTableau ou collectionYÉléments de, Chaque traversée assigne la valeur de l'élément à x
Par exemple
for(int num:nums)
C'est ça.nums Ce tableau traverse , Combien de numéros , Combien de fois .
Donnez une de ces valeurs à chaque fois que vous traversez num;
foreachPeut être utiliséforSubstitution de déclarations
for(int i =0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}Idées générales:

class Solution {
public int removeDuplicates(int[] nums) {
return process(nums, 1);
}
int process(int[] nums, int k) {
int idx = 0;
for (int x : nums) {
if (idx < k || nums[idx - k] != x) nums[idx++] = x;
}
return idx;
}
}
Les deux dernières idées sont citées leetcode Contenu du blogueur shanggongshui sanye ,En cas d'infraction,Contact supprimer
边栏推荐
- 如何进行MDM的产品测试
- 90后开始攒钱植发,又一个IPO来了
- 要上市的威马,依然给不了百度信心
- ISO27001认证办理流程及2022年补贴政策汇总
- 【每日一题】871. 最低加油次数
- Is BigDecimal safe to calculate the amount? Look at these five pits~~
- 简单易用的地图可视化
- 【每日一题】556. 下一个更大元素 III
- Open source PostgreSQL extension age for graph database was announced as the top-level project of Apache Software Foundation
- Lua emmylua annotation details
猜你喜欢

超标量处理器设计 姚永斌 第6章 指令解码 摘录

机器学习概念漂移检测方法(Aporia)

谷粒商城(一)

如何提高开发质量

Rainfall warning broadcast automatic data platform bwii broadcast warning monitor

Superscalar processor design yaoyongbin Chapter 7 register rename excerpt

How to improve development quality

【Hot100】32. Longest valid bracket

股价大跌、市值缩水,奈雪推出虚拟股票,深陷擦边球争议

Open source PostgreSQL extension age for graph database was announced as the top-level project of Apache Software Foundation
随机推荐
项目通用环境使用说明
明星开店,退,退,退
用于图数据库的开源 PostgreSQL 扩展 AGE被宣布为 Apache 软件基金会顶级项目
Achieve animation effect through event binding
Mysql5.7 installation tutorial graphic explanation
The block:usdd has strong growth momentum
Flask lightweight web framework
DB-Engines 2022年7月数据库排行榜:Microsoft SQL Server 大涨,Oracle 大跌
Easy to use map visualization
表情包坑惨职场人
Russia arena data releases PostgreSQL based products
Initial experience of domestic database tidb: simple and easy to use, quick to start
Reptile elementary learning
庆贺!科蓝SUNDB与中创软件完成七大产品的兼容性适配
Why are some online concerts always weird?
Unity 制作旋转门 推拉门 柜门 抽屉 点击自动开门效果 开关门自动播放音效 (附带编辑器扩展代码)
[daily question] 556 Next bigger element III
比李嘉诚还有钱的币圈大佬,刚在沙特买了楼
[daily question] 871 Minimum refueling times
中断的顶半部和底半部介绍以及实现方式(tasklet 和 工作队列)