Time of Update: 2014-05-14
標籤:style blog c color http com HP
Time of Update: 2014-05-14
在web頁面上,想要畫出一個圓形,方法有很多,SVG、canvas都可以繪圖。但是本文不採用這兩種方式,而是使用一個div。div一般是一個矩形,但是如果設定一個圓角樣式border-radius就可以將div變成圓形。圓的位置需要在畫布中絕對位置(position: absolute),也就是通過設定X、Y座標在定位,對應的css樣式是left、top。想要圓的絕對位置起效,畫布就要設定position:relative。<!DOCTYPE
Time of Update: 2014-05-14
整理兩個實現功能,一個是右下角的返回頂部,一個是右側的返回頂部,分別 第一種實現一、JSP或HTML(主體結構)在body中添加<body id="top"><p id="back-to-top"><a href="#top"><span></span></a>&
Time of Update: 2014-05-14
很簡單的題目,不過還是覺得要說一下。最小深度,很快想到bfs,層序遍曆嘛。本科的時候實在是沒寫過多少代碼,一開始居然想不到怎麼儲存一層的資訊。後來想到可以壓入一個特殊的對象,每次到達這個對象就知道是一層了。我用的是null 指標,覺得這個適用性還是不錯的。一層的節點入隊結束後,應該壓入一個NULL,當一層的節點都處理完,遇到NULL的時候,要在隊列尾部再入隊一個NULL,這是後一層的分界線嘛。昨天在另一道題上看到了另一種做法,用一個資料結構vector<set<*> >(
Time of Update: 2014-05-14
水題。我之前說過包含至多幾個至少幾個的問題都比較難,這個題可是讓我大臉了。至多可以重複一次,那就重複次數多於兩次再計算重複,否則的話像普通的資料一樣直接按照重複次數前移就可以了嘛。不過說歸說,這種inspace的思想還是有些用處的,數組這種實現方式致命的缺點就是刪除或者添加中間的元素代價太大,因為不好把握資料的最終位置。這個題是一種情況,合并兩個排序好的數組也是一個例子。class Solution {public: int removeDuplicates(int A[], int n)
Time of Update: 2014-05-14
接著上面的問題,如果這個矩陣中有阻塞的障礙,就不能用前面的那種組合數的方法了,因為很多位置實際上是沒有路的嘛。剩下的合理解法只有dp了。跟那個求最小和的非常像,從右下角往前推算,對於一個位置(i, j),它的走法應該是(i+1, j)和(i,
Time of Update: 2014-05-14
我覺得這個題好無聊啊,好端端一個數組,幹嘛要跟比巴蔔一樣轉一圈輸出呢。。思想很簡單,每次從左至右,再從上到下,在從右至左,再從下到上。問題是每次到什麼時候該改變方向。我的做法是用一個變數儲存當前在第幾層,這個層是相對於從外向內有幾圈來說的。注意想清楚邊界的話這個題一點也不難。有個細節,我的迴圈允出準則是訪問的數跟矩陣總個數之間的關係,如果有一次在判斷進入迴圈是條件是滿足的,但是在迴圈內部不滿足了,我的策略是忽略這種情況,雖然這樣會在結果集中多加一些重複的資料,但是以我的演算法,一定是先訪問沒有訪
Time of Update: 2014-05-14
從左上到右下,只能向右或向下,問一共有多少種走法。這個問題當然可以用遞迴和dp來做,遞迴的問題是很可能會逾時,dp的問題是需要額外空間。其實沒有其他限制條件的話,這個問題有個很簡單的解法。給定一個格子,假設是m*n的,從左上方走到右下角的總步數是確定了的,(m+n-2)嘛,即在豎直方向一定要走m-1步,在水平方向一定要走n-1步。那有多少種解法就相當於確定什麼時候往下走,什麼時候往右走,也即相當於從這m+n-2步中,挑選出m-1步有多少種挑法,因為剩下的肯定要往右走
Time of Update: 2014-05-14
旋轉數組的尋找問題。從頭開始掃一遍,O(N)的複雜度,一般也能過,甚至先排序以下,再二分都能過。不過這道題的目的當然不在於此。想一下旋轉之後對我們的尋找產生了什麼影響。如果沒旋轉過,我們直接比較target與A[middle]的大小,然後總能非常確定的丟掉源數組的一半,即把搜尋空間減半,但是旋轉之後,只根據A[middle]是確定不了下一輪的走向的,因為即使A[middle]比target大,按理說我們應該往前找,但是如果源數組是迴圈左移的,較小的數可能在後半部分。上面說的都是旋轉之後與沒旋轉的
Time of Update: 2014-05-14
字串的好題。題幹解釋的非常複雜,一下讓人不知所措了。這道題到底是什麼意思呢?最終的結果是把一個字串中字母的順序打亂了,讓你判斷一個字串能不能由另一個字串打亂得到。那打亂這個過程是怎麼做的呢,很簡單,給你一個字串,你必須先找一個點把它砍成兩半,你可以通過交換這兩半的順序來打亂源字串的順序,也就是在兩半中的字元與另一半中所有字元的相對順序是統一的。對於每一半,都可以重複上面的過程。那想一下,怎麼知道打斷的那個點在哪呢?窮舉。怎麼知道打斷之後有沒有做交換操作呢?兩種情況遞迴,有一條走的通就可以了。還有
Time of Update: 2014-05-14
partition是快排的準備工作,被用在其他很多問題上,比如找滿足某個條件的數之類的。在數組中,可以一頭一尾的指標依次置換,這樣是不能保證源數組中的相對順序的。鏈表中就不一樣了,沒辦法拿到尾部的指標,只能從頭部往後找,找到第一不滿足partition條件的節點,即較大的數,然後再往後找較小數,把較小數的節點移到前面來,因此跟數組的做法還有個區別,鏈表的partition只有一個指標在做實際的移動,另一個指標一直儲存的是插入的位置。class Solution {public:
Time of Update: 2014-05-14
這道題之前一直沒敢做,沒想到前天用遞迴一遍過了。。當時為什麼想著用遞迴,而不是dp呢,因為我想到達某個位置的情況有很多,即使從當前位置開始的搜尋是已知的,但之前的狀態是怎樣的也無從得知啊,實話實說,我是不會用dp解這個。。遞迴的思路就好說多了,從當前點開始,有上下左右四個位置可以探測,如果探測成功的話,要把當前的位置用其他符號標記出來,以免重複訪問。實際上就是DFS嘛,只不過入口多一些。需要注意的一點是,每個點都可以作為起點,所以這個要窮舉一下,否則會漏掉情況的。當然有一種情況走通就可以返回了,
Time of Update: 2014-05-14
快速乘方的演算法,寫了好多變,出了各種錯,真是服了我自己了。思想是每次對n減半,將當前的temp平方。需要注意的是如果當前的n是個奇數,減半之後會丟失掉一次乘積,因此如果當前的n為奇數,應該先在結果裡面乘一個temp。還有,n可能是負數,負數的次方最後要求一次倒數。class Solution {public: double pow(double x, int n) { if(n == 0) return 1; if(n == 1)
Time of Update: 2014-05-14
很簡單的題目,在想是不是後面就不要更這麼簡答的了,大家都會寫,沒人看啊。層序遍曆的基礎上,加了儲存每一層,加了從下往上輸出,就是一個vector和一個stack的問題嘛,無他,但手熟爾。class Solution {public: vector<vector<int> > levelOrderBottom(TreeNode *root) { vector<vector<int> > res; if(root ==
Time of Update: 2014-05-14
可以用遞迴簡潔的寫出,但是會逾時。dp嘛。這個問題需要從後往前算,最右下角的小規模是已知的,邊界也很明顯,是最後一行和最後一列,行走方向的限制決定了這些位置的走法是唯一的,可以先算出來。然後不斷的往前推算。用distance[i][j]儲存從當前位置走到最右下角所需的最短距離,狀態轉移方程是從distance[i+1][j]和distance[i][j+1]中選一個小的,然後再加上自身的。代碼很容易理解,這就是dp的魅力。空間上是可以最佳化的,因為目前狀態只與後一行和後一列有關係
Time of Update: 2014-05-14
在盛情收到學弟邀請給他們整理ACM數學方面的知識體系,作為學長很認真的弄了好久,希望各學弟不辜負學長厚愛!!!很抱歉由於電腦全盤格式化好多word、PPT都丟失,我盡量詳細地給大家找到各知識點學習連結及題目連結,敬請原諒。裡面很多牛人寫的部落格,我都貼了網址,大家認真看下吧! 本人數論部落格地址:
Time of Update: 2014-05-14
這道題雖然是上一道題的增強,但是反而簡單了。可以交易無數次,但是買賣必須成對的出現。為了簡單起見,我用abc三股股票來說明,且忽略掉相等的情況。三個數一共有六種大小關係。注意他們之間的先後順序是不能亂的。1. a<b<c。這種情況下的最大收益是c-a,c-a=(c-b)+(b-a)。連續的大於,依次算差,加起來就行了。2. b<a<c。即中間那股小,最大收益是c-b,因為a入b出賠錢,a入c出收益少。3. a<c<b。最大收益b-a.4.
Time of Update: 2014-05-14
這道題還是挺難的,屬於我前面提到的,給個數組,線性時間找出個什麼東西,雖然上面的兩個買賣股票也是這類,不過相比之下稚嫩多了。有關至少至多的問題比較煩人,不好想,等再做一些題,可能會發現什麼規律。這道題的情況還是比較少的,要麼買賣了兩次,要麼一次。買賣一次的情況,已經解決過了,現在分析買賣兩次的情況。兩次買賣之間是沒有交叉的,即下一次買之前一定已經賣掉了。最容易想到,窮去分點,每個部分都按照買賣一次的方法做。好,恭喜,你已經走在逾時的路上了。那麼怎麼辦呢,有沒有一種方法,線上性時間內,等我走到一個
Time of Update: 2014-05-14
學校的伺服器可以上外網了,所以打算寫一個自動爬取笑話並發到bbs的東西,從網上搜了一個笑話網站,感覺大部分還不太冷,html結構如下: 可以看到,笑話的連結清單都在<div class="list_title">裡面,用Regex可以把最近的幾個笑話地址找出來,再進到一個笑話頁面看下:
Time of Update: 2014-05-14
Windows Socket+HTTP伺服器用戶端 Winsock是 Windows下通訊端標準。 1.HTTP協議: HTTP是基於用戶端/伺服器的請求,響應協議。