原创 和爲s的兩個數(32)

題目 【輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,讓輸出的兩個數的乘積是最小的】 1、分析 用兩個指針分別指向數組的第一個元素和最後一個元素,若兩數的和大於s ,則尾

原创 左旋字符串(33)

題目 【彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環左移K位後的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸出循環左移

原创 翻轉單詞順序(34)

題目 1、分析 首先將每個單詞進行翻轉 再將以上的結果進行再次翻轉,即可得到最終的結果 2、代碼 class Solution { public: string ReverseSentence(string str

原创 平衡二叉樹(29)

題目 【輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹】 1、分析 平衡二叉樹:如果某二叉樹中任意節點的左、右子樹深度相差不超過1,那麼它就是一顆平衡二叉樹。 可以使用遞歸的方式將每個節點的左右子樹的深度進行遍歷,再進行計算是否

原创 數組中的逆序對(25)

題目 【在數組中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。並將P對1000000007取模的結果輸出。 即輸出P%1000000007】 如輸入:7 5

原创 在排序數組中查找數字(27)

題目一:數字在排序數組中出現的次數 【統計一個數字在排序數組中出現的次數。如 {1,2,3,3,3,3,4}和數字3,由於3出現的4,所以輸出4】 方法一: 1、分析 直接遍歷數組,由於數組已經排好序了,所以當數組中出現了數字 k

原创 兩個鏈表中的第一個公共節點(26)

題目 【輸入兩個鏈表,找出它們的第一個公共結點】 1、分析 使用暴力法是將一個鏈表(長爲m)中的每個元素分別與另一個鏈表(長爲n)中的元素進行比較,時間複雜度爲 O(m∗n)O(m*n)O(m∗n) 進一步分析可知,兩個

原创 範圍for

1、範圍for是C++11的新特性,語法如下: for(declaration:expression) statement; 範圍for迭代的範圍是確定的,在使用的過程中無需擔心下標越界的情況。 可以遍歷定義了begin()

原创 把數組排成最小的數(22)

題目 【輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323】 1、分析 在進行拼接時要注意,把兩個 i

原创 sort() 函數的用法

一、sort 函數的基本知識 1、sort 函數位於頭文件 #include<algorithm> 中,是C++標準庫中的函數。 2、sort 函數原型如下,包含三個參數分別爲 void sort (RandomAccessIte

原创 1~n 整數中1出現的次數(21)

題目 方法一 將每個數字中的1的個數進行相加,最終的結果就是1出現的總的次數。但是這種方法的效率較低,時間複雜度爲 O(n∗logn)O(n*log_n)O(n∗logn​),當n非常大的時候,需要大量的計算。 代碼: cla

原创 數據流中的中位數

題目 【如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從數據流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用Insert()方法讀取數據

原创 數組中出現次數超過一半的數字(17)

題目 【數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。例如輸入一個長度爲9的數組{1,2,3,2,2,2,5,4,2}。由於數字2在數組中出現了5次,超過數組長度的一半,因此輸出2。如果不存在則輸出0。】 1、分

原创 字符串:string及char

一、標準庫類型string 標準庫類型string表示可變長的字符序列 1、定義和初始化string類型對象 string s; // 空字符串 string s1 = "hello"; string s2(6, 'k'); //

原创 函數形參爲指向鏈表頭指針的指針

一、函數的形參爲指向鏈表頭指針的指針。當頭指針爲空時,需要使用指向指針的指針。 1、形參與實參間通過地址傳遞 (1)、當頭指針爲空時,向該鏈表中添加新的節點,此時需要使用到指針的指針。InsertNode01 函數使用了指針的指針,所以其