小公尺二面手撕演算法題

2021-09-27 02:00:43 字數 686 閱讀 7518

今天參加小公尺二面,面試官讓手撕一道演算法題,感覺這道演算法題挺有意義的,所以還是分享出來。題目如下

這道題目的思路可能會很簡單,但是裡面的細節可能會要重視一下,我自己寫的**如下,**能夠全部通過。話不多說,直接上**。

public static void main(string args) else

sb1.delete(0, sb1.length());

}if(i == ch.length -1 && sb1.length()>0)}}

system.out.println(sb);

}

我剛開始是定義了兩個stringbuilder,但是如果我sb = sb1的時候,存在乙個引用的問題,淺拷貝可能會導致sb的值為null,所以採用的是乙個string,乙個stringbuilder來進行計算。還有乙個需要注意的點是當我最後乙個字元是數字的時候,如果最後的數字序列是最長的字串行,當我遍歷到最後乙個字元的時候,如果是數字的話,並且如果不加if判斷的話,會直接跳過返回的是之前的最長的子串,所以最後要加if(i == ch.length -1 && sb1.length()>0)

這個判斷。其它的思想還是比較簡單的。

總結:細節問題要注意。

手撕演算法 adaboost

adaboost是典型的boosting演算法。boosting演算法的核心思想是 上乙個模型對單個樣本 的結果越差,下個模型越重視這個樣本 增大該樣本的權重,加大模型 錯的成本 提公升樹就是每個模型都是決策樹,提公升樹種效果比較好的是gbdt和xgboost,入門是adaboost。adaboos...

手撕演算法 PCA

pca,principle component analysis。lda,linear discriminant analysis 首先說一下pca和lda的區別,二者都是降維的方法,pca的主要思想是降維後各個樣本點的方差之和最大,也就是各個樣本點要盡量的區分開。而lda的思想是降維後同類的樣本要...

手撕LRU演算法

lru是least recently used的縮寫,即最近最少使用,是一種常用的頁面置換演算法,選擇最久未使用的頁面予以淘汰。lru是一種快取淘汰策略,它認為最近使用的資料就是有用的,最久沒使用的資料就是沒用的,所以在當容量滿了之後,會先淘汰掉最久沒使用的資料,騰出空間來放新資料。leetcode...