演算法及思路 二

2021-09-25 05:45:19 字數 1708 閱讀 9837

ps:判斷陣列元素是否相同時先轉換為字串再進行比較

思路1: 拉到兩人後登記在冊找符合要求的第三人(會有重複的組合)

// 雙重迴圈,儲存已有的兩個數為陣列[-1,0],尋找符合條件的第三個數

//用雜湊表儲存,key為符合的值,value為已存在的兩值的陣列

// 如當前迴圈中 i==-1, j==0;則obj [1] == [-1,0]

// 當內迴圈的值在雜湊表中有對應的值時,說明內迴圈當前的值是符合要求的值

var threesum = function (nums) ;

if (nums.length > 3) else }}

} else if (nums.length == 3) );

} else

if (cont == 0)

}

改進:   

// 先排序,後選乙個在中間,左右各乙個元素

// 如果三數之和大於0,說明右側元素太大,右側左移一位,小於0左側右移一位

// 要移動的元素在自己邊上 -- 移動的下一位為自己時結束迴圈,

// 下乙個中間的元素如果與上乙個相同則跳過

var threesum = function (nums) )

for (let i = 1; i < nums.length; i++) else if (sum < 0) else

}if (nums[i] == nums[i - 1])

}return rearr;

}

function sum(one, two) 

one[i] = one[i] ? one[i] : 0;

two[i] = two[i] ? two[i] : 0;

if (one[i] + two[i] + tim >= 10) else

// log(newarr,flag,tim)

i++;

}return newarr;

}

題目:1.生成乙個擁有5個成員的陣列

2.生成(0-32]之間的隨機數

3.將隨機數插入陣列,保證陣列成員不重複

let arr = new array(5);

let i = 0;

let setarr = function(x)

if(arr[arr.length-1])

arr[i++] = rand;

return setarr(rand);

}

改進版:不使用while,上面方法可能會有重複

let arr = new array(5);

let i = 0;

let rand = parseint(math.random() * 30 + 2);

let setarr = function (x) ;

if(arr.includes(x)) else

setarr(rand);

return arr;

}

題目源自:前端面試每日 3+1(每日三問)

歸併排序思路及演算法實現

歸併排序 通過將兩個或兩個以上的有序表組合成乙個新的有序表這一思想進行排序。思路 假設初始序列含有n個記錄,每個記錄長度為1,通過歸併合併成 n 2 個長度為2或1的有序序列 如此重複進行歸併,到最後就可以得到乙個長度為n的有序序列。及注釋如下 void merge int data,int p,i...

基於python實現LRU演算法及思路詳情

感謝這位博主解答,搞了很久才弄明白這個問題 思路 用列表儲存資料的順序,列表中資料越靠後,表示最新訪問,更新時間越晚 最舊資料的key 最新資料的key data1,data2,data3,data4,完整資料 基於列表 字典實現 class lru def init self,capacity 儲...

c 雜湊演算法的實現方法及思路

有想過hash a1 datetime.now 這句是怎麼實現的嗎?我們來重溫下學校時代就學過的雜湊演算法吧。我們要寫個class,實現如下主程式呼叫 複製 如下 static void main string args n程式設計客棧bsp 一看,也確實挺簡www.cppcns.com單的,就是乙...