原创 分享幾個疫情之下的算法面試題(一)

前言 最近由於疫情被裁員,還得在大環境不好的情況下面試,有點傷。分享幾個我最近被問到的算法面試題把 指定元素第一次出現的位置 思路:立馬就想到二分,因爲返回的是第一次出現的位置,所以還得和前面的數比較一下 public cla

原创 算法精講:貪心

介紹 貪心算法是在每一步選擇中都採取當前最好的或者最優的選擇,從而導致最終的結果是最好的或者最優的。貪心算法可以解決解決一些最優化問題,如求圖中的最小生成樹,求哈夫曼編碼。算法的思想還是比較容易理解的,難的是問題能否用貪心解決,貪

原创 LeetCode 面試題 17.14. 最小K個數

思路 題目地址:https://leetcode-cn.com/problems/smallest-k-lcci/ 思路:最小堆的簡單應用 代碼 public class Solution { public int[]

原创 最少獵頭拿到全部簡歷問題

題目 已知獵頭跟簡歷的對應關係,獵頭手中的簡歷可能重疊。找到能獲取全部簡歷的最少獵頭 eg: A 1 2 3 4 B 2 3 5 C 4 5 6 D 5 6 7 8 E 1 4 6 result: [A, D] 面試官:能做出來

原创 指定元素第一次出現位置

題目 一個有序數組,實現一個查找函數,找出指定元素在數組中第一次出現的位置 思路:立馬就想到二分,因爲返回的是第一次出現的位置,所以還得和前面的數比較一下 public class Solution { public

原创 輸出頻率最高且最先出現的字符

題目 假設有一個字符串,字符串內部的所有字符都是在ascii編碼的範圍內,編碼求出字符串中出現頻率最高的字符,如果頻率最高的字符有幾個字符出現的頻率一樣,則輸出最先出現的字符。 如輸入串爲 “hello world, every

原创 2個線程交替打印大小寫英文字母

題目 代碼 public class Solution { private static volatile boolean flag = true; public static void main(Strin

原创 二分查找算法及其變種

二分查找算法 二分查找算法的具體思想我就不再闡述了,要進行二分查找的前提是數組有序 public class Solution { public static void main(String[] args) {

原创 LeetCode 61. 旋轉鏈表

思路 題目地址:https://leetcode-cn.com/problems/rotate-list/ 思路: 算出鏈表的長度length k = k % length,爲0的話直接返回原來的頭節點即可 頭尾相接,此時最新的

原创 LeetCode 19. 刪除鏈表的倒數第N個節點

思路 題目地址:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 思路: 遍歷2次,第一次得出鏈表長度,第二次上length-n+1的節點 雙指

原创 LeetCode 5. 最長迴文子串

思路 題目地址:https://leetcode-cn.com/problems/longest-palindromic-substring/ 思路:解法很多種,我用DP解決了,遞推方程如下,i爲起點,j爲終點 當j-i>=2時

原创 LeetCode 46. 全排列

思路 題目地址:https://leetcode-cn.com/problems/permutations/ 思路:看下圖,按順序依次確定數字,通過swap獲的所有情況 代碼 public class Solution {

原创 LeetCode 788. 旋轉數字

思路 題目地址:https://leetcode-cn.com/problems/rotated-digits/ 思路:模擬一下即可 代碼 我看了一下官方的題解,我這裏是用了一個map,其實搞複雜了,我把優化的點寫到代碼上把 pu

原创 LeetCode 982. 按位與爲零的三元組

思路 題目地址:https://leetcode-cn.com/problems/triples-with-bitwise-and-equal-to-zero/ 思路:上來就是3重循環暴力一波,超時了。後來想到可以把第1個和第2個

原创 藍橋杯 算法提高 排列數

算法提高 排列數   時間限制:1.0s   內存限制:256.0MB      問題描述   0、1、2三個數字的全排列有六種,按照字母序排列如下:   012、021、102、120、201、210   輸入一個數n