日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[Leetcode][第657题][JAVA][机器人能否返回原点][数组][HashMap]

發(fā)布時(shí)間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Leetcode][第657题][JAVA][机器人能否返回原点][数组][HashMap] 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【問(wèn)題描述】[簡(jiǎn)單]

【解答思路】

遍歷方向 看是否回到原點(diǎn) 或者 “上下” “左右”兩個(gè)方向的數(shù)量是否相等

1. 方向

時(shí)間復(fù)雜度:O(N) 空間復(fù)雜度:O(1)

class Solution {public boolean judgeCircle(String moves) {int x = 0,y= 0;int len = moves.length();if(len == 0){return true;}if(len%2!=0){return false;}char[] a = moves.toCharArray();for(int i=0;i<moves.length();i++){char c=a[i];if(c=='U')x+=1;if(c=='D')x-=1;if(c=='L')y-=1;if(c=='R')y+=1;}return x==0&&y==0;} }
2. 數(shù)組

時(shí)間復(fù)雜度:O(N) 空間復(fù)雜度:O(N)

class Solution {public boolean judgeCircle(String moves) {int[] res = new int[26];int len = moves.length();if(len == 0){return true;}if(len%2!=0){return false;}char[] c = moves.toCharArray();for(char ch :c){res[ch-'A']++;}return res['U'-'A']==res['D'-'A']&&res['L'-'A']==res['R'-'A'];} }
3. HashMap

時(shí)間復(fù)雜度:O(N) 空間復(fù)雜度:O(1)

class Solution {public boolean judgeCircle(String moves) {HashMap<Character,Integer> map = new HashMap<Character,Integer>(); //一定要先放入 不最后判斷可能找不到 因?yàn)?可能沒(méi)有某個(gè)方向 map.put('U', 0);map.put('D', 0);map.put('L', 0);map.put('R', 0);int len = moves.length();if(len == 0){return true;}if(len%2!=0){return false;}char[] c = moves.toCharArray();for(int i =0 ;i<len;i++ ){if(map.containsKey(c[i])){map.put(c[i],map.get(c[i])+1);}}return (map.get('U').equals(map.get('D')))&&(map.get('L').equals(map.get('R')));} }

【總結(jié)】

1. 反思

沒(méi)有想清楚就開(kāi)始動(dòng)手 簡(jiǎn)單題!!!硬是搞了半天!!!
輸出最后的判斷不一定要遍歷 要學(xué)會(huì)思考特判

2.hashmap最后判斷equals

值得注意的是最后判斷要用.equals不能用==。
Integer是int的包裝類,雖然能自動(dòng)拆箱,但是Integer本質(zhì)上是一個(gè)對(duì)象,我們==比較的是堆中的地址。
我們看一下jdk中Integer的源碼

public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i); }

默認(rèn)IntegerCache.low = -127, IntegerCache.high = 128, 所以在這個(gè)范圍內(nèi)比較的是值,如果不在這個(gè)范圍內(nèi)他回去new一個(gè)新的Integer對(duì)象,這時(shí)候比的就是地址了。

參考鏈接:https://leetcode-cn.com/problems/robot-return-to-origin/solution/hen-rong-yi-li-jie-de-liang-chong-jie-ti-si-lu-by-/
參考鏈接:https://leetcode-cn.com/problems/robot-return-to-origin/solution/java-hashmap-by-jolyne-3/

總結(jié)

以上是生活随笔為你收集整理的[Leetcode][第657题][JAVA][机器人能否返回原点][数组][HashMap]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。