替換空格
class
solution:
# s 源字串
defreplacespace
(self, s):
# write code here
result=
for char in s:
if char==" ":
result.extend("%20")
else:
result.extend(char)
return
''.join(result)
class
solution
i++;
}int newlength=oldnumber+replacenumber*2;//插入後的長度
if(newlength>length)//如果計算後的長度大於總長度就無法插入
return ;
int poldlength=oldnumber; //注意不要減一因為隱藏個『\0』也要算裡
int pnewlength=newlength;
while(poldlength>=0&&pnewlength>poldlength)//放字元
else
//不是空格就把poldlength指向的字元裝入pnewlength指向的位置
poldlength--; //不管是if還是elsr都要把poldlength前移
}}};
從尾到頭列印鍊錶class
solution:
# 返回從尾部到頭部的列表值序列,例如[1,2,3]
defprintlistfromtailtohead
(self, listnode):
# write code here
ifnot listnode:
return
result=
while listnode:
result.insert(0,listnode.val)
listnode=listnode.next
return result`
重建二叉樹class
solution:
# 返回構造的treenode根節點
defreconstructbinarytree
(self, pre, tin):
# write code here
if len(pre)==0:
return
none
if len(pre)==1:
return treenode(pre[0])
else:
node=treenode(pre[0])
node.left=self.reconstructbinarytree(pre[1:tin.index(pre[0])+1],tin[:tin.index(pre[0])])
node.right=self.reconstructbinarytree(pre[tin.index(pre[0])+1:],tin[tin.index(pre[0])+1:])
return node
用兩個棧實現佇列class solution
stack1.push(node);
while(!stack2.empty())
}int pop()
private:
stack
stack1;
stack
stack2;
};
class solution
int pop()
}a=stack2.top();
stack2.pop();
return a;
}private:
stack
stack1;
stack
stack2;
};
旋轉陣列的最小值class
solution:
defminnumberinrotatearray
(self, rotatearray):
# write code here
ifnot rotatearray:
return
0for i in range(len(rotatearray)-1):
if rotatearray[i+1]return rotatearray[i+1]
return rotatearray[0]
class solution:
def minnumberinrotatearray(self, array):
# write code here
iflen(array) == 0:
return 0;
left = 0;
right = len(array) - 1;
middle = -1;
while
array[left]>=array[right]:
ifright-left==1:
middle = right;
break;
middle = left + (right - left) / 2
ifarray[middle] >= array[left]:
left = middle;
ifarray[middle] <= array[right]:
right = middle;
return array[middle];
斐波那契數列class
solution:
deffibonacci
(self, n):
# write code here
if n==0:
return
0 dp=[0]*(n+1)
dp[0]=0
dp[1]=1
for i in range(2,n+1):
dp[i]=dp[i-1]+dp[i-2]
return dp[n]
跳台階class
solution:
defjumpfloor
(self, number):
# write code here
if number==0:
return
0 dp=[0]*(number+1)
dp[0]=1
dp[1]=1
for i in range(2,number+1):
dp[i]=dp[i-1]+dp[i-2]
return dp[number]
**跳台階class
solution:
defjumpfloorii
(self, number):
# write code here
if number==0:
return
0if number==1:
return
1if number==2:
return
2 dp=[0]*(number+1)
dp[0]=1
dp[1]=1
for i in range(2,number+1):
dp[i]=2*dp[i-1]
return dp[number]
矩形覆蓋
二進位制中1的個數
class
solution:
defnumberof1
(self, n):
# write code here
count = 0
for i in range(32):
count += (n >> i)&1
return count
調整陣列使得奇數字於偶數之前class
solution:
defreorderarray
(self, array):
# write code here
for i in range(1,len(array)):
k=iwhile k:
if array[k]%2
and array[k-1]%2==0:
array[k],array[k-1]=array[k-1],array[k]
k-=1
else:
break
return array
劍指offer總結 陣列
劍指offer調整整數陣列順序 題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。public class solution for int j top 1 j botto...
劍指offer練習(一)
寫在前面 純粹開個部落格督促自己刷題而已,只是把每個題的相對較好的解法蒐集過來,以便自己以後好找而已,以後也會不時寫一些跟產品經理學習有關的東西,理由同上,希望自己能堅持下去。解法 首先遍歷原字串,找出字串的長度以及其中的空格數量,根據原字串的長度和空格的數量我們可以求出最後新字串的長度。設定兩個指...
劍指Offer(一) 棧
目錄 1 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。2 棧的壓入 彈出序列 思路 3 包含min函式的棧 思路 c 解答 python解答 4 二叉搜尋樹的後序遍歷序列 5 按之字形順序列印二叉樹 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。cod...