Time of Update: 2018-12-04
看到網上一個解法,空間複雜度O(1),時間複雜度O(nlogn)做一個小演算法題,提提神一個未排序整數數組,有正負數,重新排列使負數排在正數前面,並且要求不改變原來的正負數之間相對順序。思考的過程就略去了,直接說結果吧。我想到的演算法,空間複雜度為O(1),時間複雜度為O(N*logN)。首先,定義這樣一個過程為“翻轉”:(a1,a2,...,am,b1,b2,...,bn) -->
Time of Update: 2018-12-04
題目:在一維座標軸上有n個區間段,求重合區間最長的兩個區間段。分析:這題和《編程之美》時間安排的題目類似,可以用隊列來表示,首先按照各個區間的左數字進行排序,然後依次入隊列尾,如果遇到區間的右數,從隊列頭找其對應的左數,如果隊列頭是不是其對應的左數,說明這個區間被其他區間完全包圍,相反,如果是其對應的左數,尋找其後面另一個左數,那麼他們之間的差就是該區間能夠形成的最大重合,最後統計最大的,說的有點混亂,直接看代碼吧。網上看到網友的描述,感覺比我描述的好,直接轉載過來了:-------------
Time of Update: 2018-12-04
http://www.elecfans.com/article/87/107/2009/2009032939161.html 在中大規模的嵌入式系統開發中,往往需要BootLoader對系統核心進行載入和啟動引導。現有的載入啟動引導方式大多需要目標機與宿主機間的線路串連,使用起來不方便且效率不高。本文在分析現有的載入和啟動引導方式的基礎上,提出一種改進方法,即採用基於FAT檔案系統的可行動裝置作為載入和啟動引導核心的載體,並分析其載入和啟動引導的具體過程。關鍵詞 BootLoader
Time of Update: 2018-12-04
現在的我已經接觸到hibernate了,但是,在學習過程中發現了太多的問題,自己在Java基礎部分的學習效果很不好,有很多知識點自己都沒有聽說過,也沒有見到過,學習的時候有點蒙,但是,當自己拿起書本或者上網查詢資料時,自己又不是足夠耐心,總是感覺自己記不住,不願意去學習,覺得自己記憶力減退,不知道怎麼能記住它。總是,感覺只有在應用中才能學會它,缺乏學習的積極性,需要多多學習了,不僅要在乎學校的課程,也要多花時間學習Java,這樣,自己就不會浪費自己學習的Java,浪費自己的money!!!
Time of Update: 2018-12-04
這道題很多考試中都出現了,去年參加阿里筆試就考到了這道題,編程之美也提到了,比較好的方法採用位操作,解決方案如下:執行一次x&(x - 1),將最右邊的1置為0,知道最後x變為0,迴圈結束,時間複雜度是O(M),其中M是位元中1的個數。另一種解法,時間複雜度是log(n),其中n是位元總的位元#include <stdio.h>int main(){ unsigned int x = 0xffffffff; x = (x&0x5555555
Time of Update: 2018-12-04
1. 採用迴圈的方式時,判斷low<=high就可以確定low和high的下標不會越界,至於除數是0本題不可能出現這個情況。2.#include <iostream>using std::cout;using std::endl;int binarySearchFirst(int a[] , int size , int t){if(size<=0)return -1;int low=0, high=size-1;while(low<=high){int mid =
Time of Update: 2018-12-04
4.1 序列式容器:其中的元素都可許,但未必有序,有array,vector,list,deque;配接器:stack,queue,priority_queue。4.2
Time of Update: 2018-12-04
題目:一個n位的數,去掉其中的k位,問怎樣去掉使得留下來的那個(n-k)位的數最大?分析:可以直接用貪心來求解,每次尋找從頭開始的連續遞減序列,刪除遞減序列的最後一個元素,重複K次,最後剩下的數字串組成的數字最大。比如:“13787323”第一次,遞減序列只有1,刪除1,得到3787323第二次,遞減序列只有3,刪除3,得到787323第三次,遞減序列只有7,刪除7,得到87323第四次,遞減序列是8732,刪除2,得到8733代碼如下:#include
Time of Update: 2018-12-04
問題:求出所有1-MAX之間的素數分析:我們知道如何判斷一個數是否為素數,判斷number是否可以被1到sqrt(num)之間數整除,如果存在被整除的,不是素數,否則就是素數。但是,如果用這種方法來計算,時間複雜度會非常高,我們採用另一種更好的方法——篩選法。篩選法直觀上比較好理解,從2開始,刪除所有2*p(p>=2),然後再選取下一次沒有被刪除的數t,同樣刪除t*p(p>=2)的數,最後沒有被刪除的數就是我們要求的素數,這是直觀上的理解,實際操作中可以有更多的最佳化,演算法介紹參考
Time of Update: 2018-12-04
裝了Ubuntu8.04後,Firfox的版本變成了3
Time of Update: 2018-12-04
題目:編寫Trie樹基本操作,包括插入,搜尋,銷毀分析:字典樹,就是一棵26叉樹(不考慮樹的字元的大小寫問題),在每個節點中加入計數器,表示從根節點到達當前節點的字元流表示一個字串,代碼如下:#include <iostream>#include <cstdio>using namespace std;#define ELEMENT_MAX 26typedef struct trie_node{int count;struct trie_node *
Time of Update: 2018-12-04
題目:連續的正數序列,使得和為指定值分析:以前做過類似的題目,求解兩個數字和為指定值這種題目,採用先排序,然後從兩頭開始尋找的方式,這題其實也差不多,採用兩個指標,不過這次兩個指標同時從頭開始尋找,初始化時first指標指向1,second指標指向2,如果curr_sum小於指定的sum,second指標往後移東;相反,如果curr_sum大於指定的sum,first指標往後移動。代碼如下:#include <iostream>#include
Time of Update: 2018-12-04
#include<stdio.h>void heapAdjust(int *a,int s,int m);int main(){FILE *f_in,*f_out;int i,j,n;int
Time of Update: 2018-12-04
自兩年前擔任小團隊的管理者起,面試了不少應聘者,現在總結一些應聘者常犯的一些錯誤。 1. 認為面試官是掌控全域的人 不少的應聘者容易緊張,擔心準備不足,實際上很少有面試官是準備充分的,並且他們特別容易分心,通常是依靠經驗在暫存資料表演。我的好多次面試,都源自人資兩分鐘前的一個電話,所以我會選擇先讓應聘者自我介紹,然後趕緊偷看一下簡曆。 2.
Time of Update: 2018-12-04
由於實驗室需要,要學習Linux下的驅動開發,正好自己也好好學習linux下的驅動開發,但是書本的代碼編寫碰到一個問題,就是在Ubuntu下不能編譯,經過網上的搜尋後,找到如下一篇部落格,非常不錯,如下: 編譯LDD3-scull1、提示scripts/Makefile.build:46:*** CFLAGS was changed in "/home/chenfang/scull/Makefile",Fix it use
Time of Update: 2018-12-04
uCOSII 編譯環境搭建uCos編譯環境搭建真沒有想象的那麼簡單,並不是安裝好IDE後直接用就行。查閱了好多網上的指南,並經過一晚上的努力,才弄好。為了便於以後參考,並且也方便像我一樣的新手學習uCos,便寫了下面這些。1、 編譯器安裝uCos編譯需要下面幾個步驟。l BC45主程式安裝我是使用的是Borland C/C ++
Time of Update: 2018-12-04
題目描述:Have you ever watched the movie Matrix ? In that movie, the term Matrix does not mean a mathematical thing, but a complicated AI system. In this problem, we will go back to the original meaning of matrix. Given a 0-1 matrix, you are required to
Time of Update: 2018-12-04
題意:在M*N的矩陣中,每個元素為0或1,現在問你能否找到若干行,使得每一列只有1個1.思路:bfs + 優先隊列原始碼:#include <iostream>#include <cstring>#include <cstdio>#include <queue>using namespace std;const int MAXN = 17;const int MAXM = 301;int matrix[MAXN][MAXM];int
Time of Update: 2018-12-04
最近需要將伺服器端軟體由windows移植到Linux,以前討論過windows下的Socket和Linux下的socket區別,雖然socket問題解決了,但是最近一系列的字元類型問題以及大端小端問題,折磨得我非常痛苦,下面述說這兩天遇到的問題。1,操作野檔案描述符在open("mini2440_spi", O_RDWR)操作時,沒有將開啟的檔案描述符賦值給int
Time of Update: 2018-12-04
1.安裝mplayersudo apt-get install mplayer mplayer-fonts mozilla-mplayersudo cp /etc/mplayer/mplayer.conf /etc/mplayer/mplayer.conf_backupsudo gedit /etc/mplayer/mplayer.conf找出下面這一行... vo=x11, # To specify default video driver (see -vo help for