劍指offer 數學

2022-09-08 13:15:10 字數 2169 閱讀 1478

題目一:

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。

輸出描述: 對應每個測試案例,輸出兩個數,小的先輸出。

解題思路:

數列滿足遞增,設兩個頭尾兩個指標i和j,

若ai + aj == sum,就是答案(相差越遠乘積越小)

若ai + aj > sum,aj肯定不是答案之一(前面已得出 i 前面的數已是不可能),j -= 1

若ai + aj < sum,ai肯定不是答案之一(前面已得出 j 後面的數已是不可能),i += 1

時間複雜度o(n)

class solution 

};

方案二:

class solution 

};

方案三:

假設字串abcdef,n=3,設x=abc,y=def,所以字串可以表示成xy,如題幹,問如何求得yx。假設x的翻轉為xt,xt=cba,同理yt=fed,那麼yx=(xtyt)t,三次翻轉後可得結果。

class solution 

};

方案四:

class solution 

};

題目三:

牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?

三種解法:

方案一:

class solution 

}reverse(first,second);

reverse(str.begin(),str.end());

return str;

}};

方案二:

class solution 

string reversesentence(string str)

reverseword(str, s, e - 1); //區域性翻轉

}return str;

}};

方案三:

class solution 

if(tmp.size()) res = tmp + res;

return res;

}};

題目四:

ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王(一副牌原本是54張^_^)...他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!!「紅心a,黑桃3,小王,大王,方片5」,「oh my god!」不是順子.....ll不高興了,他想了想,決定大\小 王可以看成任何數字,並且a看作1,j為11,q為12,k為13。上面的5張牌就可以變成「1,2,3,4,5」(大小王分別看作2和4),「so lucky!」。ll決定去買體育彩票啦。 現在,要求你使用這幅牌模擬上面的過程,然後告訴我們ll的運氣如何, 如果牌能組成順子就輸出true,否則就輸出false。為了方便起見,你可以認為大小王是0。

方案一:

1、排序 

2、計算所有相鄰數字間隔總數 

3、計算0的個數 

4、如果第2、3步相等,就是順子 

5、如果出現對子,則不是順子

class solution 

}return true;

}};

class solution 

return false;

}};

方案二:

max 記錄 最大值

min 記錄  最小值

滿足條件 1 max - min <5

2 除0外沒有重複的數字(牌)

3 陣列長度 為5 

class solution 

};

參考:

劍指offer數學問題

題目描述 求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 題目分析 這是明顯的等差數列求和問題,可以直接使用等差數列的求和公式算出答案,但是題目要求不能使用乘除法。累加問題可以用遞迴來解決,但是遞迴需要if 條件來跳...

劍指offer 數學和其他

數學和其他 14 2.py 給你一根長度為 n 的繩子,請把繩子剪成整數長度的 m 段 m n都是整數,n 1並且m 1 每段繩子的長度記為 k 0 k 1 k m 1 請問 k 0 k 1 k m 1 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到...

劍指offer全套解答 劍指offer 1 5

1.二維陣列中的查詢 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。public class solution int n array 0 length i...