騰訊校招題:fork進程與緩衝

題目描述:請問下面的兩個程式各一共輸出多少個“-”?#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(void){ int i; for(i=0; i<2; i++) { fork(); printf("-"); } return 0;} #include <stdio.h>#include

O(n)迴文子串(Manacher)演算法

資料來源網路 參見:http://www.felix021.com/blog/read.php?2040問題描述:輸入一個字串,求出其中最大的迴文子串。子串的含義是:在原串中連續出現的字串片段。迴文的含義是:正著看和倒著看相同,如abba和yyxyy。 解析:這裡介紹O(n)迴文子串(Manacher)演算法演算法基本要點:首先用一個非常巧妙的方式,將所有可能的奇數/偶數長度的迴文子串都轉換成了奇數長度:在每個字元的兩邊都插入一個特殊的符號。比如 abba 變成 #a#b#b#a#,

找出無序數組中第k小的數

題目描述:給定一個無序整數數組,返回這個數組中第k小的數。 解析:最平常的思路是將數組排序,最快的排序是快排,然後返回已排序數組的第k個數,演算法時間複雜度為O(nlogn),空間複雜度為O(1)。使用快排的思想,但是每次只對patition之後的數組的一半遞迴,這樣可以將時間複雜度將為O(n)。 代碼實現:#include <iostream>#include <string>#include <cstring>#include <vector>

const與define的對比

define常見用法:1.定義簡單的常數:定義常量,便於修改(切不可在後面加上分號!)#define N 1000等效於const int N = 1000;但略有不同,define只是簡單替換,而不是作為一個變數來使用. 2. 定義簡單的函數:注意多使用括弧  define可以像函數那樣接受一些參數,如下:#define max(x,y) (x)>(y)?(x):(y); 3.條件編譯(防止重複包括

值 引用 指標概念區別匯總

傳值和傳引用的概念傳值(pass by value):即形參接收實參傳遞過來的值,如果是自訂類型,要調用拷貝建構函式。函數處理的是形參的值。傳引用(pass by reference):參考資料表示與原對象完全相同,是同一個對象。若函數的形參是引用,則實參與形參間不存在參數傳遞,且函數內對形參的修改就是修改實參,因為它們是參考關聯性,是同一個對象。 語言應用C語言中,傳遞的參數類型只有1個:傳值,包括傳遞普通數值和指標。C++中,傳遞的參數類型有2個:傳值、傳引用java中,傳遞的類型只有1個:

編程之美:尋找發帖”水王”

1.問題描述快速找出發帖超過一半的的ID問題變型:現在有一個數組,已知一個數出現的次數超過了一半,請用最小的複雜度的演算法找出這個數。問題擴充:有三個發帖很多的ID,他們的發帖數目超過了文章總數目的1/4,請從發帖ID列表中找出它們  2.分析與解法每次從列表中刪除兩個不同的ID,那麼剩下的ID列表中,“水王”的ID出現次數仍然超過剩餘數目的一半,因此每次刪除兩個不同的ID,直到剩下的所有ID都相同,那麼剩下的就是水王的ID。我們可以設定一個candidate和一個計數器nTimes,candi

堆和棧概念整理

1.記憶體管理方式:     堆:一般由程式員分配釋放,程式員申請時需要指明大小,leg,C語言中malloc函數:p1=(char*)malloc(10),C++中:p2=new char[20].若程式員不去釋放,當程式結束時可能由作業系統釋放 ,注意其與資料結構的堆完全是兩回事,分配方式類似於鏈表,分配釋放的關鍵字:new,malloc,delete,free     棧:由系統自動分配和釋放,存放函數的參數值,局部變數等等,操作類似於資料結構的棧,eg:生命一個局部變數 int

Chapter 7 進程環境

1.main函數C函數總是從執行一個名為main的函數開始。main函數的原型為int main(int argc, char *argv[]); 其中

Chapter 5 標準I/O庫

1.流和FILE對象對於國際字元集,一個字元可以由一個以上的位元組來表示。標準I/O檔案流可以用來操作單位元組和多位元組(寬,wide)字元集。一個流的方向(orientation)決定了字元是以單位元組還是多位元組的方式讀取,當一個流被建立時,它沒有方向。如一個多位元組I/O函數(見<wchar.h>)用在了沒有方向的流上,那麼流的方向會設為面向寬字元的。如果一個位元組I/O函數用在一個沒有方向的流上,那麼流的方向會設為面向位元組的。只有兩個函數可以在設定後改變這個方向。freop

Linux處理序間通訊之訊號量(semaphore)、訊息佇列(Message Queue)和共用記憶體(Share Memory)

System V 進程通訊方式:訊號量(semaphore)、訊息佇列(Message Queue)和共用記憶體(Share

和為n連續正數序列

題目描述:輸入一個正數n,輸出所有和為n連續正數序列。例如輸入15,由於1+2+3+4+5=4+5+6=7+8=15,所以輸出3個連續序列1-5、4-6和7-8。 分析:來源於互連網

Hadoop 2.0 Yarn代碼:ResourcesManager端代碼_RM端各模組服務的啟動

1.概覽以下介紹的NodeManager是如何啟動和註冊各個服務的主要涉及的Java檔案hadoop-yarn-server-resourcemanager下的包org.apache.hadoop.yarn.server.resourcemanager:ResourcesManager.java 2.程式碼分析Hadoop啟動時。ResourcesManager的main開始執行 1).main函數進行初始化操作,eg:配置資訊的讀取等等,然後建立ResourcesManager地向執行Reso

淺談最佳化程式效能(上)

前言我們知道,多項式定義為:在幾何學中,多項式是最簡單的平滑曲線。簡單是指它僅由乘法及加法構成,平滑是因為它類同口語中的平滑,以數學術語來說,它是無限可微,即它的所有高次微分都存在。事實上,多項式的微分也是多項式。簡單及平滑的特點,使多項式在數值分析、圖論,以及電腦繪圖等,都發揮極大的作用。多項式求值是解決許多問題的核心技術。以數值分析為例,多項式函數常常用作對數學庫中的三角函數求近似值。現在,讓我們來用 C

google code jam exercise——Store Credit

最近瞭解到Google Code Jam這件事情,一個編程競賽項目,登入之後可以看到以前的題目,覺得都很有意思,於是想嘗試一下。我看到的第一題是Store

在移位元組中尋找數

題目描述:一個數組是由一個遞減數列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移兩位形成的,在這種數組中尋找某一個數。 解析:很多解法的時間複雜度都停留在O(n),下面的解法 仍為二分尋找法 只不過 對應題目做了相應的改進 時間複雜度為O(log2n) 1.思路:(畫圖實際上更直觀看出來思路,讀者試著自己畫出圖來對應分析)設數組a[start]~a[end],mid = (start + end) / 2

google code jam exercise——welcome to code jam

Welcome to code jam,Qualification Round 2009的第三道題。題目的大概意思是,給定一個字串,要求找出裡面welcome to code jam的次數,給出最後四位元字。只要這19個字元按順序出現了,就可以算作一次,不管是否被其它字元隔開。在Contest Analysis中,給的方法是動態規劃。在思考了一小會沒有想到解法之後又直接看答案了。。。動態規劃的思想是,cnt[i,j]表示在給定的字串的前i個字元中,出現welcome to code

時間複雜度O(n),空間複雜度O(1)的排序

題目描述:如何對n個數進行排序,要求時間複雜度O(n),空間複雜度O(1) 解析:利用計數排序法,設定一大小為65536的int數組,範圍a[0]~a[65535],並初始為0,然後遍曆n個數,假設這n個數在數組array[0...n-1]中,則i取值從0到n-1同時執行a[array[i]]++,最後再依照順序讀數組a,遇到不為0時,將對應的下標讀回數組array,計數是幾次就讀幾次,覆蓋原有數,這樣得出的array即為排序所求因為空白間複雜度大小已知,為65536,執行迴圈次數約為n+655

最小排列數

題目描述:輸入一個正整數數組,將它們串連起來排成一個數,輸出能排出的所有數字中最小的一個。例如輸入數組{32, 

資料結構與演算法——多項式

在《演算法設計技巧與分析》5.5節介紹了多項式求值的嵌套乘法,也稱作Horner規則,即Pn(x)=anxn+an-1xn-1+...+a1x+a0=((...(((anx+an-1)x+an-2)x+an-3)...)x+a1)x+a0。這個是很容易就實現的。這裡要求次數是連續的並且大於等於0。如果定義多項式的資料結構poly.h如下, 1 #ifndef POLY_H_ 2 #define POLY_H_ 3 4 #include <vector> 5 #include

google code jam exercise——Water Sheds

Water Sheds,這是Qualification Round 2009的第二道題,還沒有想到好的解決辦法的時候,直接看了參考解答。參考解答研究了好久才看明白,看來還需要加強練習。先來看看題目意思,給定一個mxn的矩陣,每個位置是一個海拔值,相當於是一份地圖,要求根據水流給這份地圖進行標註,水流動的規則是,1. 對任一個位置,至多流向它的四個鄰置中的一個,鄰居就是東南西北方向的四個位置;2. 如果相比於四個鄰居,它本身的海拔最低,那麼水不流動,這個位置稱為sink,盆地;3.

總頁數: 61357 1 .... 26359 26360 26361 26362 26363 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.