今日のトピックは、ブラシLeetCode 2つ目の質問、2つの数字が一緒になり、今この質問を行うには非常に簡単です
まず考えたのは、だった右の2つの数字が抽出され、その後、一緒に追加して、新しいリストを生成しますが、問題があると、データ型intの最大数を超える可能性があります。コードは以下の通りであります:
パブリック 静的ListNode溶液(ListNode L1、L2 ListNode){ // 入力文字列が最大範囲INT超えることがあるので、このアプローチは、正しくない ListNodeヘッド= 新しい新規(0 ListNodeを); ListNode P = ヘッドと のStringBuilderのStringBuilder = 新しい新規のStringBuilder(); 一方(L1 =!NULL ){ StringBuilder.Insert( 0 、l1.val); L1 = l1.next; } のStringBuilder stringBuilder2 = 新しい新規のStringBuilder(); ながら!(L2 = NULL){ stringBuilder2.insert( 0 、l2.val)。 L2 = l2.next。 } int型の和= Integer.parseInt(stringBuilder.toString())+ Integer.parseInt(stringBuilder2.toString())。 一覧 <整数>リスト= 新しい ArrayListを<> (); 一方、(和!= 0 ){ list.add(合計 10% )。 和 =和/ 10 。 } のための(int型 i = 0; iが(はlist.sizeを<); iが++ ){ ListNode listNode = 新しいですListNode(list.get(I)); p.next = listNode。 P = listNode。 } 戻りhead.nextと、 }
データがローからハイウェルに格納されているため、その後、したがって、プロセスは、データが追加されているシミュレートすることができ、アップ追加することができます。注意するには、この時点では世界的な数の必要性は、データを運ぶために必要があることを確認し、最終的にはすべての数字が一緒に、最終的に運ぶかどうかを判断する必要がすることです、我々はまた、新しいリストのノードを生成する必要があります
パブリック 静的ListNodeの対処方法2(ListNode L1、L2 ListNode){ ListNodeヘッド = 新しい ListNode(0 )。 ListNodeのP = ヘッド。 int型前= 0 ; 一方、(!L1 = ヌル!&& L2 = NULL ){ int型 NUM1 = l1.val。 int型からnum2 = l2.val。 L1 = l1.next。 L2 = l2.next。 int型の合計= num1をnum2の+ + 前。 ListNode newnode = 新しいですListNode(合計10% )。 プリ =和/ 10 。 p.next = newnode。 P = newnode。 } ListNodeその他 = 新しい ListNode(0 )。 もし(!L1 = ヌル){ others.next = L1; } 他の 場合(L2 =!NULL ){ others.next = L2。 } 他人 = others.next。 しばらく(他人!= nullを){ int型 NUM = others.val。 int型の合計= NUM + 前。 ListNode newnode = 新しい ListNode(合計10% )。 プリ =和/ 10 。 p.next = newnode。 P = newnode。 他人 = others.next。 } であれば(PRE = 0!){ ListNode newnode = 新しいListNode(PRE)。 p.next = newnode。 } 戻りhead.nextと、 }