牛客網刷題3 python

2021-09-24 15:29:32 字數 2508 閱讀 5397

11.輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。

思路:舉個例子:乙個二進位制數1100,從右邊數起第三位是處於最右邊的乙個1。減去1後,第三位變成0,它後面的兩位0變成了1,而前面的1保持不變,因此得到的結果是1011.我們發現減1的結果是把最右邊的乙個1開始的所有位都取反了。這個時候如果我們再把原來的整數和減去1之後的結果做與運算,從原來整數最右邊乙個1那一位開始所有位都會變成0。如1100&1011=1000.也就是說,把乙個整數減去1,再和原整數做與運算,會把該整數最右邊乙個1變成0.那麼乙個整數的二進位制有多少個1,就可以進行多少次這樣的操作。

class solution:

def numberofl(self,n):

count = 0

if n<0:

n = n & 0xffffffff //負數補碼

while n:

n = n & (n-1)

count += 1

return count

12.給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

class solution:

def power(self, base, exponent):

# write code here

return pow(base, exponent)

直接呼叫函式的方式太醜陋了,因此換c++**實現。

/* 方法1,遞迴呼叫 */

class solution

else if(exponent == 0)

else

}}/* 方法2 */

class solution

return (exponent > 0)? r:1/r;

}};

13.輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

思路:這其實是乙個氣泡排序,將陣列中的元素進行判斷,若某個位置的數為奇數,且該數前乙個元素為偶數,將互換。

class solution:

def reorderarray(self, array):

for i in range(len(array)):

for j in range(len(array-1),i,-1): //j從len(array-1)開始,逆序

if array[j]%2 == 1 and array[j-1]%2 == 0:

temp = array[j-1]

array[j-1] = array[j]

array[j] = temp

return array

/* 方法2:利用雙向佇列 */

from collections import deque

class solution:

def reorderarray(self, array):

# write code here

odd = deque()

x = len(array)

for i in range(x):

if array[i]%2 == 0:

if array[x-i-1]%2 == 1: //逆序,以保證順序不變

return list(odd)

14.輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。

/*    */

class solution:

def search(self, head, k)

l =

while head != none:

head = head.next

if len(l15.輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。

思路:遞迴實現

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class solution:

# 返回listnode

def reverselist(self, phead):

last = none

if not phead or not phead.next:

return phead

while phead:

temp = phead.next //將phead.next值賦給temp防止鍊錶斷裂

phead.next = last

last = phead

phead = temp

return last

牛客網刷題

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 立華奏在學習初中數學的時候遇到了這樣一道大水題 設箱子內有 n 個球,其中給 m 個球打上標記,設一次摸球摸到每乙個球的概率均等,求一次摸球摸到打標記的球的概率 e...

牛客網刷題

時間限制 c c 2秒,其他語言4秒 空間限制 c c 524288k,其他語言1048576k 64bit io format lld 立華奏是乙個剛剛開始學習 oi 的萌新。最近,實力強大的 qingyu 當選了 iods 9102 的出題人。眾所周知,iods 是一場極其毒瘤的比賽。為了在這次...

牛客網刷題day3

1.傳輸介質是通訊網路中傳送方和接收方之間的 a 通路。a.物理 b.邏輯 c.虛擬 d.數字 2.廣域網覆蓋的地方範圍從幾十公里到幾千公里,它的通訊子網主要使用 b a.報文交換技術 b.分組交換技術 c.檔案交換技術 d.電路交換技術 解析 廣域網的通訊子網主要使用分組交換技術。廣域網是由許多交...