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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指算法

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

劍指算法

題目二:單例設計模式

1.題目描述:設計一個類,只能生成一個實例化對象。

? (1)分析:例如:windows中任務管理器,jvm回收器,運行過程中只有一個實例,創建對象會使用該類的構造方法,那么可以將其設置為private,由該類提供一個對象,由該類的靜態方法提供出來,保證對象一直是該類提供的。

? (2)提供2個,餓漢式和懶漢式(線程不安全,需要改為線程安全)

一:懶漢式: 優點是線程安全,但是對象一直存在于內存中,浪費空間。

public class Singleton{private Singleton singletonInstance=new SingletonInstance();priate Singleton(){}public static Singleton getInstance(){return singletonInstance;}}}

二:餓漢式:優點是對象在需要的時候才創建,不浪費資源,缺點是多線程中不安全,需要改進。

線程不安全:

public class Singleton{ //此處不實例化對象。private Singleton singletonInstance;priate Singleton(){}public static Singleton getInstance(){if(SingletonInstance==null){//此處在多線程進行時,如果線程1進入這里阻塞,那么線程二進行上面的判斷的時候,發現對象是沒有創建的,則還會進入這個分支語句。則會//創建2個對象。不能保證單例的特點了。singleton=new Singleton();}return singletonInstane;}}}

線程安全

public class Singleton{ private static Singleton singletonInstance;private Singleton() {}public static Singleton getSingletongHolder() {//第一層訪問控制,能節約線程的等待時間。如果對象已經創立了則無需等待。if (singletonInstance == null) {//同步代碼 synchronized (Singleton.class) {//第二層控制,保證對象不存在時才創建。if (singletonInstance == null) {singletonInstance = new Singleton();}}}return singletonInstance;} }

題目三:二維數組中查找目標值

1.題目描述:一個二維數組,每一行大小順序按從左到右排列;每一列按從上到下排列。給定一個target,確定是否在其中。

? 數組例子:

1234
58910
6111213
7141516

2:思路一:(1)利用雙指針迫近尋找, 找到一個邊角,如右上角,如果target比他大,則行數+1,(因為右上角的值是該行最大的值)如果target比他小,則列數-1(該數值是該列中最小的數據,比他小只能是前幾列中),終止條件:row>array.length-1 || col<0;

//方法一:利用雙指針:利用該數組的排列順序,使得指針慢慢迫近。時間復雜度:O(mn)條件:public static boolean searchKey(int[][] array,int target){int row=0;int col=array[0].length-1;if(array==null||array.length==0){return false;}// 循環條件 row<array.length-1 && col>0;while (row<array.length-1 && col>0){//等于目標值,則輸出行和列,返回true 結束方法。if(array[row][col]==target){System.out.println(row+" "+col);return true;}//不等于目標值時的2種處理if(target<array[row][col]){col--;}else{row++;}}System.out.println("沒有找到");return false;}

測試:

@Test public void mt(){int[][] array={{1,2,3,4},{3,5,6,7},{8,9,13,14},{15,16,17,18}};ArraySearch.searchKey(array,13);}

結果:

2 2

總結

以上是生活随笔為你收集整理的剑指算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。