[Java] 83.ソートされたリンクリストの繰り返し要素を削除する--- whileループを使用して問題を解決し、アイデアを単純化します。時間計算量はO(N)です。

昇順で並べられたリンクリストがあります。このリンクリストのヘッドノードを指定します。各要素が1回だけ表示されるように、繰り返される要素をすべて削除してください。

昇順でソートされた結果のリンクリストを返します。
例1:

入力:ヘッド= [1,1,2]
出力:[1,2]ここに画像の説明を挿入

促す:

リンクリスト内のノードの数は、[
0、300 ] -100 <= Node.val <= 100の範囲内です
質問データは、リンクリストが昇順で配置されていることを確認します。

复杂代码:运行时间1MS
public ListNode deleteDuplicates(ListNode head) {
    
    
		  ListNode p=head,p1=head;
		  if(head==null||head.next==null) {
    
    
			  return head;
		  }
		  int a=head.val;
		  p=p.next;
		  while(p!=null) {
    
    
			  if(p.val==a) {
    
    
				  while(p!=null) {
    
    
					  if(p.val!=a) {
    
    
						  p1.next=p;
						  p1=p1.next;
						  a=p.val;
						  p=p.next;
						  break;
					  }
					 p=p.next;
				  }
			  }else {
    
    
				  p1.next=p;
				  p1=p1.next;
				  a=p.val;
				  p=p.next;
			  }
			  
		  }
		  if(p==null) {
    
    
			  p1.next=null;
			  return head;
		  }
    	  return head;
      }
修改版代码:运行时间0MS
public ListNode deleteDuplicates(ListNode head) {
    
    
		  ListNode p=head,p1=head;
		  if(head==null||head.next==null) {
    
    
			  return head;
		  }
		  int a=head.val;
		  p=p.next;
		  while(p!=null) {
    
    
			  if(p.val!=a) {
    
    
				  p1.next=p;
				  p1=p1.next;
				  a=p.val;
			  }
              p=p.next; 
		  }
		  if(p==null) {
    
    
			  p1.next=null;
			  return head;
		  }
    	  return head;
      }

おすすめ

転載: blog.csdn.net/qq_44461217/article/details/115231191
おすすめ