發表文章

目前顯示的是 7月, 2017的文章

[思路]LeetCode Problems- 476. Number Complement

圖片
這篇要講的題目是Number Complement,即為"補數"的意思.題目原文如下: Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation. Note: The given integer is guaranteed to fit within the range of a 32-bit signed integer. You could assume no leading zero bit in the integer’s binary representation. Example 1: Input: 5 Output: 2 Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2. Example 2: Input: 1 Output: 0 Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.題目的ㄧㄠ 題目是要求某數二進位翻轉過後的結果是甚麼數字. 這題跟我先前解過的  [思路]LeetCode Problems- 461. Hamming Distance  有些相似, 都要求出十進位轉二進位, 所以一開始我的想法是: 1.十進位轉二進位 2.0跟1互換,1變0,0變1 3.在反求二進位轉十進位的數值 看起來還蠻合理的,但是在開始著手之後,就發覺整個過程變得很複雜.... 首先是在於,我在算十進位轉二進位的方法,主要是一開始先創設32位元的0元素陣列(考慮到int變數的位元範圍下), 再用除法除2時,把求得的餘數1或0放進去 例如對5做轉換求到的值,在陣列中被表

[思路]LeetCode Problems- 537. Complex Number Multiplication

圖片
 這次要來解決的問題是複數相乘Complex Number Multiplication. C語言不像在大學時期所碰的MATLAB一樣有方便的數學函數工具箱,可以幫學生做計算-----應該說要用C計算數學也是可以,但基本上兩種軟體的功用大不相同-----這次的問題在為自己將來有可能會碰到MATLAB轉C的需求作準備. 題目原文如下: Given two strings representing two  complex numbers . You need to return a string representing their multiplication. Note i 2  = -1 according to the definition. Example 1: Input: "1+1i", "1+1i" Output: "0+2i" Explanation: (1 + i) * (1 + i) = 1 + i 2 + 2 * i = 2i, and you need convert it to the form of 0+2i. Example 2: Input: "1+-1i", "1+-1i" Output: "0+-2i" Explanation: (1 - i) * (1 - i) = 1 + i 2 - 2 * i = -2i, and you need convert it to the form of 0+-2i. Note: The input strings will not have extra blank. The input strings will be given in the form of  a+bi , where the integer  a  and  b  will both belong to the range of [-100, 100]. And  the output should be also in this form . 題目的大意為給定兩個以a+bi表示的複數,並且還是字串的形態, 求兩個複數相乘的結果,同樣要以a

[書摘]跟誰都能聊不停---這樣說話,讓你到處受歡迎

圖片
(此文章僅為個人學習用途並針對書籍做重點整理摘要,若要更多細節,實例與圖示請購買本書支持作者) 前言 *對話無法持續的原因 緊張(未曾見面的人,長輩,心儀異性) 怕生 話說得不好 不知道該說些甚麼 初次見面 對方是"不熟的人" 缺乏主動開口的勇氣 沒有自信 沒有話題 不知道如何選擇話題 不曉得該如何回應 想太多 目的不明 認為自己非說話不可 第一章:這麼做,就不怕冷場! *緩和緊張的三個要點 告訴自己對方也很緊張 不要過度自我意識,用 平常心 與對方接觸 用心累積經驗: 越怕就越要說 *對話不中斷的基本技巧 精簡才能達意--> 縮短句子 讓說出來的話簡單明瞭 視對象改變措辭 腹式呼吸 練習發聲 4.肢體語言 活絡對話 *克服結巴口吃 =>多做嘴巴體操,練習有節奏地說話,腹式呼吸 *笑容讓聊天更愉快 擺出笑容的要訣: 正面思考 有意識地露出笑容 促進對話的重點: 禮儀 說話時的姿勢 穿著打扮 *初次見面的對話 事前蒐集資料 (個人資訊:工作地點,所屬單位,職位,出生地,母校,個性,興趣) (企業資訊:業種,員工人數,歷史,董事,營業概要,客戶) 準備好話題 外表推測個性 *展現真正的自己: 做腹式呼吸 告訴對方自己也很尷尬 自我暗示 *在對話中臨機應變 * 日常對話 的目的:培養彼此的感情,建立良好的人際關係 ==> 正確性並不重要 ,立刻糾正對方的話是無法建立關係的 * 工作對話的目的:講求正確性,讓工作順利進行 第二章:這麼說,越聊越熱烈! *聊天就像 傳接球 球=>話題 只顧著自己傳球,很快就沒有話聊 -->請對方將球傳回來對話才能繼續下去 接住對方傳來的球再傳出對方容易接的球 說話的分配=> 對方說七成,自己說三成 *搭腔的技巧 1.同意對方的話 就是啊-一點也沒錯-嗯-對-真的耶 2.簡短陳述自己的意見 噢~真了不起啊-你已經很努力了-這樣當然會生氣了-真的很不容易啊!-有機會想和你一起試試-一定很好吃吧!

[思路]LeetCode Problems- 461. Hamming Distance

圖片
有鑑於上次按隨機鍵出來的題目難度特高,花了不少心思, 並且上週去成大一個禮拜沒碰到程式許久, 我決定這次來解決一些較簡單的題目, 並嘗試不用C++而用C語言來完成 這次練習的題目是Hamming Distance,題目原文如下: The  Hamming distance  between two integers is the number of positions at which the corresponding bits are different. Given two integers  x  and  y , calculate the Hamming distance. Note: 0 ≤  x ,  y  < 2 31 . Example: Input: x = 1, y = 4 Output: 2 Explanation: 1 (0 0 0 1) 4 (0 1 0 0) ? ? The above arrows point to positions where the corresponding bits are different. 漢明距離(Hamming Distance)在通訊領域裡是頗重要的編碼應用,個人最早是在學習通道編碼的Viterbi演算法中碰到的. 在Viterbi演算法中需要透過編碼器的格狀架構找出一條最短路徑,找出擁有「最大可能性」路徑的方法,而這就需要應用到漢明距離.最簡單的解釋 就是 位元數不同的數目總和 例如:(wiki) 10 1 1 1 01 與 10 0 1 0 01 之間的漢明距離是2 2 14 3 8 96 與 2 23 3 7 96 之間的漢明距離是3 跟先前寫過的題目來比,這一題的邏輯脈絡就清楚許多,可分成三個步驟: 1.十進位轉換成二進位 2.轉換後資料存成字串或陣列 3.比對兩個字串或陣列的內容 首先要來處理的就是位制轉換問題,十進位轉換成二進位的方法如下所示: 簡言之 這演算法有兩個重要skill: 1.取得餘數(1或者是0) 2.針對除法所得到的商數繼續做除法 有了這兩個概念後我們就可以用FOR迴圈來實現這個轉換問題 已知輸入的十進