【Java学習】1配列、辞書
4627 ワード
Leetcodeの2つの数の和に関する知識点
引用する
このブログから正式にJava言語で問題を書き始めましたが、テーマはLeetcodeでpython言語で書いた簡単な問題です.アルゴリズムを強固にする一方で,Java言語の使い方をできるだけ早く身につける.博文は最後にAのコードを添付します.コミュニケーションを歓迎します.
タイトル
1.両数の和
整数配列とターゲット値を指定し、配列とターゲット値の2つの数を見つけます.入力ごとに1つの答えしか対応せず、同じ要素が再利用できないと仮定できます.
例:nums=[2,7,11,15]が与えられ、target=9はnums[0]+nums[1]=2+7=9であるため[0,1]を返す
インテリジェントポイント
Java配列
Javaの配列は、固定サイズの同型データを格納するために使用されます.例えばnum[10]は、10個の独立変数num 0,num 1,...,num 9が宣言されていることを示す.まず、配列の宣言、作成、初期化手順について説明します.多次元配列とArrayクラスの使い方を紹介します.
配列変数の宣言
配列は、プログラムで使用する前に宣言する必要があります.次のように宣言します.dataTypeはデータ型、arrayRefVar次元グループ変数名を表します.
配列の作成
Javaはnewオペレータで配列を作成します.ここでarraySizeは配列長であり、配列要素の下付き文字は0から始まる.
配列の初期化配列を作成すると配列 が初期化される.配列の要素に対して循環により を割り当てる.
たじゅうはいれつ
複数の配列は配列の配列と見なすことができ、例えば2次元配列は複数の1次元配列からなる配列と見なすことができる.
多次元配列の初期化には、次の2つがあります.静的初期化:配列を宣言しながら を初期化する動的初期化:配列を宣言した後、 を初期化する
多次元配列が空間を割り当てる方法は2つあります.は各次元に直接空間を割り当て、フォーマットは以下の である.最上位次元から始まり、次元ごとに空間 が割り当てられます.
Arraysクラス
java.util.Arrayクラスは配列を容易に操作でき,提供する方法はすべて静的である.fill,sort,equals,binarySearchなどの方法があり、具体的には以下の通りである. boolean equals(array 1,array 2):2つの配列が等しいかどうかを比較する void sort(array):配列array要素を昇順に配列する String toString(array):配列を文字列に変換します.arrayを直接印刷し、hashcodeコードが出るため、配列内容を出力するには文字列に変換して を印刷する必要がある. void fill(array,val):配列内のすべての要素をval に割り当てます. int binarySearch(array,val):二分検索を使用して、配列arrayの値valの下付きを検索します.配列は秩序数列でなければならないが、本無秩序であればsort関数を用いてソートし、 を二分して検索する必要がある. dataType[]copyOf(array,length):配列arrayをlengthの長さの新しい配列 にコピーする
Java Mapインタフェース
Javaには辞書の概念はなくなり,一般的にはMapでキー対値の機能を実現する.Mapインタフェースではキーと値を1つずつマッピングし,キーで値を取得できる.Mapの宣言作成方法:MapmapName=new HashMap()Mapの方法は以下の通りです. void clear():すべてのマッピング関係を削除 boolean containsKey(Object k):map(マッピング)にキーkのマッピング関係が含まれている場合はtrueを返します. boolean containValue(Object v):mapに1つ以上のキー値が値vにマッピングされている場合、trueが返されます. Set entrySet():map(マッピング)内のすべてのマッピング関係をSetビューに追加します. boolean equals(Object obj):指定したオブジェクトとmapが等しいかどうかを比較します.このオブジェクトはmapではないか、元のマッピングのsizeが異なる可能性があります.mapとobjの各データ要素が同じである場合にのみtrueが返されます. Object get(Object k):指定されたキーにマッピングされた値を返します.mapにキーのマッピング関係が含まれていない場合はmullを返します. int hashCode():このマッピングのハッシュコード値を返します. boolean isEmpty():このマッピングにキー値のマッピング関係が含まれていない場合はnullを返します. Set keySet():このマッピング内のすべてのキーのSetビューを返します. Object put(Object k,Object v):mapに新しいk-vキーペア値を追加します. void putAll(Mapm):マッピングmのすべてのマッピング関係をこのマッピングにコピーします. Object remove(Object k):キーkのマッピング関係がある場合は、マッピングから削除します. int size():map(マッピング)のキー値関係数を返します. Collection values():このマッピングに含まれる値のCollectionビューを返します.
解法
テーマから分かるように,2数の和を求め,目標値targetがある.アルゴリズムの複雑さを低減し,配列の遍歴回数を低減するには,重要なツールであるMapを用いる必要がある.現在の遍歴データbの場合、以前に遍歴したデータの中にaが1つ存在し、a+b=targetを満たす限り、遍歴は終了する.a,bの位置を返すので,遍歴したデータの値(keyとして)と位置(valueとして)を格納するにはMapを用いる必要がある.アルゴリズム複雑度:O(n) Solution:
引用する
このブログから正式にJava言語で問題を書き始めましたが、テーマはLeetcodeでpython言語で書いた簡単な問題です.アルゴリズムを強固にする一方で,Java言語の使い方をできるだけ早く身につける.博文は最後にAのコードを添付します.コミュニケーションを歓迎します.
タイトル
1.両数の和
整数配列とターゲット値を指定し、配列とターゲット値の2つの数を見つけます.入力ごとに1つの答えしか対応せず、同じ要素が再利用できないと仮定できます.
例:nums=[2,7,11,15]が与えられ、target=9はnums[0]+nums[1]=2+7=9であるため[0,1]を返す
インテリジェントポイント
Java配列
Javaの配列は、固定サイズの同型データを格納するために使用されます.例えばnum[10]は、10個の独立変数num 0,num 1,...,num 9が宣言されていることを示す.まず、配列の宣言、作成、初期化手順について説明します.多次元配列とArrayクラスの使い方を紹介します.
配列変数の宣言
配列は、プログラムで使用する前に宣言する必要があります.次のように宣言します.dataTypeはデータ型、arrayRefVar次元グループ変数名を表します.
dataType[] arrayRefVar; //
dataType arrayRefVar[]; // ,
配列の作成
Javaはnewオペレータで配列を作成します.ここでarraySizeは配列長であり、配列要素の下付き文字は0から始まる.
dataType[] arrayRefVar = new dataType[arraySize]; // , arrayRefVar
配列の初期化
double[] myList = new double[4]{1.2, 3.4, 2.5, 7.9}
double[] myList;
for(int i=0; i
たじゅうはいれつ
複数の配列は配列の配列と見なすことができ、例えば2次元配列は複数の1次元配列からなる配列と見なすことができる.
String str[][] = new String[3][4];
多次元配列の初期化には、次の2つがあります.
int[] arr = new int[]{1,2,3};
String[] strArr = new String[3];
strArr[0] = "Hello";
strArr[1] = "World";
strArr[2] = "Hello World";
多次元配列が空間を割り当てる方法は2つあります.
int a[][] = new int[2][3];
String s[][] = new String[2][];
s[0] = new String[2];
s[1] = new String[3];
Arraysクラス
java.util.Arrayクラスは配列を容易に操作でき,提供する方法はすべて静的である.fill,sort,equals,binarySearchなどの方法があり、具体的には以下の通りである.
boolean flag = Array.equal(str1, str2); // true false
Array.sort(score); //score
String str = Array.toString(score);
Array.fill(num, 6); // num 6
int key = Arrays.binarySearch(num, 3); // 3 num
dataType[] b = Arrays.copyOf(a, a.length); // 1: 2:
Java Mapインタフェース
Javaには辞書の概念はなくなり,一般的にはMapでキー対値の機能を実現する.Mapインタフェースではキーと値を1つずつマッピングし,キーで値を取得できる.Mapの宣言作成方法:MapmapName=new HashMap()Mapの方法は以下の通りです.
mapName.clear();
解法
テーマから分かるように,2数の和を求め,目標値targetがある.アルゴリズムの複雑さを低減し,配列の遍歴回数を低減するには,重要なツールであるMapを用いる必要がある.現在の遍歴データbの場合、以前に遍歴したデータの中にaが1つ存在し、a+b=targetを満たす限り、遍歴は終了する.a,bの位置を返すので,遍歴したデータの値(keyとして)と位置(valueとして)を格納するにはMapを用いる必要がある.
class Solution {
public int[] twoSum(int[] nums, int target) {
Map map = new HashMap();
for(Integer i=0;i