劍指Offer之Java算法習(xí)題精講數(shù)組查找與字符串交集
題目一
數(shù)組題——二分查找法
寫(xiě)一個(gè)函數(shù)查找給定的數(shù)組中指定的數(shù)值
具體題目如下
?解法
class Solution { public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1; while(left<=right){ int mid = left+(right-left)/2; if(nums[mid]==target){ return mid; }else if(nums[mid]>target){ right = mid - 1; }else if(nums[mid]<target){ left = mid + 1; } } return -1; } }
題目二
數(shù)組題——查找數(shù)組中元素位置
根據(jù)給定的數(shù)組按照指定條件查找首尾元素位置
具體題目如下
?解法:
class Solution { public int[] searchRange(int[] nums, int target) { int[] res = {-1,-1}; int left = 0; int right = nums.length-1; while(left<=right){ int mid = left+(right-left)/2; if(nums[mid] == target){ res[0] = mid; right = mid-1; }else if(nums[mid]>target){ right = mid - 1; }else if(nums[mid]<target){ left = mid+1; } } left = 0; right = nums.length-1; while(left<=right){ int mid = left+(right-left)/2; if(nums[mid] == target){ res[1] = mid; left = mid+1; }else if(nums[mid]>target){ right = mid - 1; }else if(nums[mid]<target){ left = mid+1; } } return res; } }
題目三
字符串題——查找字符串交集
根據(jù)給定的字符串按照指定條件查找一個(gè)字符串所涵蓋的另一個(gè)字符串字符的最小子串
具體題目如下
解法
class Solution { public String minWindow(String s, String t) { if(s == null || s == "" || t == null || t == "" || s.length() < t.length()){ return ""; } int[] need = new int[128]; int[] have = new int[128]; for (int i = 0; i < t.length(); i++) { need[t.charAt(i)]++; } int left = 0, right = 0; int min = s.length() + 1, count = 0, start = 0; while (right < s.length()){ char r = s.charAt(right); if (need[r] == 0) { right++; continue; } if (have[r] < need[r]) { count++; } have[r]++; right++; while (count == t.length()){ if (right - left < min) { min = right - left; start = left; } char l = s.charAt(left); if (need[l] == 0) { left++; continue; } if (have[l] == need[l]) { count--; } have[l]--; left++; } } if (min == s.length() + 1) { return ""; } return s.substring(start, start + min); } }
到此這篇關(guān)于劍指Offer之Java算法習(xí)題精講數(shù)組查找與字符串交集的文章就介紹到這了,更多相關(guān)Java 數(shù)組查找內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 劍指Offer之Java算法習(xí)題精講鏈表與字符串及數(shù)組
- 劍指Offer之Java算法習(xí)題精講數(shù)組與字符串題
- 劍指Offer之Java算法習(xí)題精講N叉樹(shù)的遍歷及數(shù)組與字符串
- 劍指Offer之Java算法習(xí)題精講數(shù)組與字符串
- 劍指Offer之Java算法習(xí)題精講數(shù)組與列表的查找及字符串轉(zhuǎn)換
- 劍指Offer之Java算法習(xí)題精講字符串操作與數(shù)組及二叉搜索樹(shù)
- 關(guān)于java數(shù)組與字符串相互轉(zhuǎn)換的問(wèn)題
- java 字符串轉(zhuǎn)化為字符數(shù)組的3種實(shí)現(xiàn)案例
- Java數(shù)組與字符串深入探索使用方法
相關(guān)文章
java高并發(fā)下CopyOnWriteArrayList替代ArrayList
這篇文章主要為大家介紹了java高并發(fā)下CopyOnWriteArrayList替代ArrayList的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Eclipse轉(zhuǎn)Itellij IDEA導(dǎo)入Git/svn本地項(xiàng)目的詳細(xì)步驟
這篇文章主要介紹了Eclipse轉(zhuǎn)Itellij IDEA導(dǎo)入Git/svn本地項(xiàng)目,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10java.lang.UnsupportedClassVersionError錯(cuò)誤的解決辦法(附圖文)
這篇文章主要給大家介紹了關(guān)于java.lang.UnsupportedClassVersionError錯(cuò)誤的解決辦法,"java.lang.UnsupportedClassVersionError"意味著您正在運(yùn)行的Java版本與編譯該類時(shí)使用的Java版本不兼容,需要的朋友可以參考下2023-10-10通過(guò)String.intern()方法淺談堆中常量池
這篇文章主要介紹了通過(guò)String.intern()方法淺談堆中常量池,在JDK7之前,字符串常量是存在永久帶Perm 區(qū)的,JDK7開(kāi)始在將常量池遷移到堆中,這個(gè)變化也導(dǎo)致了String的新特性,下面我們慢慢進(jìn)行介紹。,需要的朋友可以參考下2019-06-06springboot1.X和2.X中如何解決Bean名字相同時(shí)覆蓋
這篇文章主要介紹了springboot1.X和2.X中如何解決Bean名字相同時(shí)覆蓋,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03RabbitMQ延時(shí)隊(duì)列詳解與Java代碼實(shí)現(xiàn)
這篇文章主要介紹了RabbitMQ延時(shí)隊(duì)列詳解與Java代碼實(shí)現(xiàn),RabbitMQ 延時(shí)隊(duì)列是指消息在發(fā)送到隊(duì)列后,并不立即被消費(fèi)者消費(fèi),而是等待一段時(shí)間后再被消費(fèi)者消費(fèi)。這種隊(duì)列通常用于實(shí)現(xiàn)定時(shí)任務(wù),需要的朋友可以參考下2023-04-04