數學技巧 ZigZag Conversion

2021-07-01 19:28:08 字數 656 閱讀 7991

思想:

關鍵是歸納出元素出現位置的公式。

比如 nrows =4 的情形需要下面這樣的分布:

第0行:0 + + 6  +  + 12

第1行:1 + 5 7 +  11 

第2行:2 4 + 8 10

第3行:3 + + 9 

(1)對於 第0行 && 第3行(最後一行):

出現的元素在原串的位置依次是:0,6,12

規律是:0,0+2*nrows-2=6,6+2*nrows-2=12

即後面的每乙個元素的位置都是前面元素位置加上(2*nrows-2)。

(2)對於其餘的行,即中間的所有行:

比如第1行(設行標為i,此時i=2)出現的元素在原串的位置依次是:1,5,7,11

規律是:1,1+2*(nrows-1-i)=5,5+2*i=7,7+2*(nrows-1-i)=11

即後面的元素所在列+1如果是奇數,則下個元素位置則為該位置+2*(nrows-1-i);

如果是偶數,則下個元素位置為該位置+2*i。

當然,往最後的結果串中加元素的話還要看下標是否越界。

class solution

string res = "";

int len = s.length();

for(int i=0; i

數學建模 Excel技巧

在數學建模中,經常用到excel來儲存資料,固然也需要將資料匯入到matlab中。1.首先是讀取excel 要用到xlsread函式,xlsread的返回值有三種形式 numeric xlsread file numeric,txt xlsread file numeric,txt,raw xlsr...

數學,原理,方法,技巧

學校裡學到的東西為什麼沒有用處?主要是學到的東西大部份都有人去實現了。比如資料結構中學做乙個二叉樹。其實在外邊幹活的時候根本不需要。誰會讓你去編寫乙個二叉樹?即使做專案的時候真的有用,大概也有已經實現的類代替了。所以有人說學校裡學到的東西基本沒有用。不過也難怪,因為這些人只是學到了原理或者方法。學校...

LeetCode 數學 解答技巧總結

int reverse int x x 10 return r 在網上看到別人的答案,感覺非常精妙。首先,此解答無需判斷整數的正負,正負數進行加減乘除取餘操作結果都一樣,其次,判斷是否溢位也非常簡單,因為輸入是整數,所以溢位只可能出現在最後一位需要反轉的數字加上去之後,也就是對原整數最高為進行反轉之...