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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

剑指 Offer打卡 数组与矩阵

發(fā)布時(shí)間:2024/9/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指 Offer打卡 数组与矩阵 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

二維數(shù)組中的查找

public class Solution {public static void main(String[] args) {System.out.println(new Solution().Find(2, new int[][]{{1, 1}}));}public boolean Find(int target, int [][] array) {if(array == null || array.length == 0 || array[0].length == 0) {return false;}int rows = array.length, cols = array[0].length;int r = 0, c = cols - 1;while(r <= rows - 1 && c >= 0) {if(target == array[r][c]) {return true;} else if(target > array[r][c]) {r++;} else {c--;}}return false;} }

數(shù)組中重復(fù)的數(shù)字

public class Solution {/*** 3. 數(shù)組中重復(fù)的數(shù)字* 要求時(shí)間復(fù)雜度 O(N),空間復(fù)雜度 O(1)。因此不能使用排序的方法,也不能使用額外的標(biāo)記數(shù)組。** 對于這種數(shù)組元素在 [0, n-1] 范圍內(nèi)的問題,可以將值為 i 的元素調(diào)整到第 i 個(gè)位置上進(jìn)行求解。在調(diào)整過程中,* 如果第 i 位置上已經(jīng)有一個(gè)值為 i 的元素,就可以知道 i 值重復(fù)。** 以 (2, 3, 1, 0, 2, 5) 為例,遍歷到位置 4 時(shí),該位置上的數(shù)為 2,但是第 2 個(gè)位置上已經(jīng)有一個(gè) 2 的值了,* 因此可以知道 2 重復(fù)** @param args*/public static void main(String[] args) {System.out.println(new Solution().duplicate(new int[]{2, 3, 1, 0, 2, 5}));}public int duplicate(int[] nums) {for (int i = 0; i < nums.length; i++) {while (nums[i] != i) {if (nums[i] == nums[nums[i]]) {return nums[i];}swap(nums, i, nums[i]);// 1 3 2 0 2 5// 3 1 2 0 2 5}swap(nums, i, nums[i]);// 0 1 2 3 2 5}return -1;}private void swap(int[] nums, int i, int j) {int t = nums[i];nums[i] = nums[j];nums[j] = t;} }

替換空格

public class Solution {public static void main(String[] args) {System.out.println(new Solution().replaceSpace("1 2 3 3"));}/*** 替換空格** 代碼中的類名、方法名、參數(shù)名已經(jīng)指定,請勿修改,直接返回方法規(guī)定的值即可** @param s string字符串* @return string字符串*/public String replaceSpace(String s) {StringBuffer result = new StringBuffer(s);int p1 = result.length() - 1;for (int i = 0; i <= p1; i++) {if (result.charAt(i) == ' ')//這里是兩個(gè)空格哈result.append(" ");}int p2 = result.length() - 1;while (p1 >= 0 && p2 > p1) {char c = result.charAt(p1--);if (c == ' ') {result.setCharAt(p2--, '0');result.setCharAt(p2--, '2');result.setCharAt(p2--, '%');} else {result.setCharAt(p2--, c);}}return result.toString();} }

第一個(gè)只出現(xiàn)一次的字符位置

/*** 在一個(gè)長為 字符串中找到第一個(gè)只出現(xiàn)一次的字符,并返回它的位置,* 如果沒有則返回 -1(需要區(qū)分大小寫).(從0開始計(jì)數(shù))** @author inke219223m*/ public class Solution {public static void main(String[] args) {System.out.println(new Solution().firstUniqChar(""));System.out.println(new Solution().firstUniqChar("cc"));}public int FirstNotRepeatingChar1(String str) {int[] cnts = new int[128];for (int i = 0; i < str.length(); i++)cnts[str.charAt(i)]++;for (int i = 0; i < str.length(); i++)//條件 cnts[str.charAt(i)] == 1if (cnts[str.charAt(i)] == 1) return i;return -1;}public char FirstNotRepeatingChar(String s) {int[] cnts = new int[128];for (int i = 0; i < s.length(); i++)cnts[s.charAt(i)]++;for (int i = 0; i < s.length(); i++)//條件 cnts[str.charAt(i)] == 1if (cnts[s.charAt(i)] == 1) return s.charAt(i);return ' ';}public char firstUniqChar(String s) {if (s.equals("")) return ' ';int[] cnts = new int[128];for (int i = 0; i < s.length(); i++) {cnts[s.charAt(i)]++;}for (int i = 0; i < s.length(); i++) {if (cnts[s.charAt(i)] == 1)return s.charAt(i);}return ' ';} }

順時(shí)針打印矩陣

public class Solution {public static void main(String[] args) {System.out.println(new Solution().printMatrix(new int[][]{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}));System.out.println(new Solution().spiralOrder(new int[][]{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}));}public ArrayList<Integer> printMatrix(int[][] matrix) {ArrayList<Integer> ret = new ArrayList<>();int r1 = 0, r2 = matrix.length - 1, c1 = 0, c2 = matrix[0].length - 1;while (r1 <= r2 && c1 <= c2) {//上for (int i = c1; i <= c2; i++) {//第一行 [r1][i]ret.add(matrix[r1][i]);}//右for (int i = r1 + 1; i <= r2; i++) {ret.add(matrix[i][c2]);}if (r1 != r2) {//下for (int i = c2 - 1; i >= c1; i--) {ret.add(matrix[r2][i]);}}if (c1 != c2) {//左for (int i = r2 - 1; i > r1; i--) {ret.add(matrix[i][r1]);}}r1++;r2--;c1++;c2--;}return ret;}public int[] spiralOrder(int[][] matrix) {ArrayList<Integer> ret = new ArrayList<>();int r1 = 0, r2 = matrix.length - 1, c1 = 0, c2 = matrix[0].length - 1;while (r1 <= r2 && c1 <= c2) {//上for (int i = c1; i <= c2; i++) {//第一行 [r1][i]ret.add(matrix[r1][i]);}//右for (int i = r1 + 1; i <= r2; i++) {ret.add(matrix[i][c2]);}if (r1 != r2) {//下for (int i = c2 - 1; i >= c1; i--) {ret.add(matrix[r2][i]);}}if (c1 != c2) {//左for (int i = r2 - 1; i > r1; i--) {ret.add(matrix[i][r1]);}}r1++;r2--;c1++;c2--;}return ret.stream().mapToInt(Integer::valueOf).toArray();} }

done

總結(jié)

以上是生活随笔為你收集整理的剑指 Offer打卡 数组与矩阵的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本肉体xxxx裸体xxx免费 | 亚洲精品一区二 | 最近中文字幕在线中文视频 | a爱视频| 亚洲国产成人在线视频 | 综合激情网站 | av网站一区二区 | 乱人伦中文字幕 | 在线观看日韩视频 | 极品少妇xxxx精品少妇 | 亚洲色图21p | 国产美女一区二区 | 日韩欧美日本 | 黑人中文字幕一区二区三区 | 日本人的性生活视频 | 美女在线不卡 | 国产精品tv| 一区二区精品在线 | 免费看h网站 | 欧美影视一区二区三区 | 亚洲88av| 国产激情免费视频 | 夫妻毛片 | jizjiz中国少妇高潮水多 | 九九热精品在线观看 | 无码人妻丰满熟妇区五十路百度 | 中文字幕人妻丝袜乱一区三区 | 91av久久久 | 大奶一区二区 | 国产又黄又粗又硬 | 国产四区 | 欧美日韩精品一区二区 | 亚洲免费视频播放 | 欧美一区二区人人喊爽 | 欧美日韩激情网 | 国内偷拍精品视频 | 另类欧美亚洲 | 先锋av资源网 | 91社区在线播放 | 日韩欧美一卡 | 农夫色综合 | 影音先锋成人资源 | 欧美成人aa | 精品无码m3u8在线观看 | av大全网站 | 交专区videossex另类 | 好男人在线观看 | www四虎精品视频免费网站 | 热热色国产 | 一本色道久久综合狠狠躁的推荐 | 国产无码精品在线观看 | 一级α片免费看刺激高潮视频 | 91成人精品国产刺激国语对白 | 久久精品国产免费看久久精品 | 乐播av一区二区三区 | 欧美老肥熟 | 永久免费精品视频 | 国产又爽又黄无码无遮挡在线观看 | 中文字字幕在线中文 | 国产伦精品一区二区三区四区 | 北条麻妃一区二区三区四区五区 | 欧美综合另类 | 久久精品2019中文字幕 | 91精品国产综合久久久蜜臀 | 67194成人在线观看 | 强制高潮抽搐哭叫求饶h | 成人欧美一区二区三区 | 日韩成人免费在线 | 亚洲色精品三区二区一区 | 在线成人毛片 | 免费看v片| 国产精品视频在线播放 | 超碰免费看| 成人在线观看黄色 | 青青操91 | 五月99久久婷婷国产综合亚洲 | 欧美精品大片 | 一区影视 | 亚洲一区二区三区观看 | 一区二区三区免费在线 | 无码任你躁久久久久久老妇 | 四虎在线观看 | 久久久久99精品成人片直播 | 黄色av视屏 | 不卡在线一区 | 日本欧美中文字幕 | 在线视频91| 久久天堂av综合合色蜜桃网 | 一二三av | 免费看国产一级片 | 性做久久久久 | 免费观看黄色网页 | 美女视频黄a视频全免费观看 | 91传媒理伦片在线观看 | 日韩在线播放av | 亚洲福利午夜 | 成人动漫av | 欧美天天 | 黄在线免费 |