一、每日一題
藍橋杯真題之工作時長
這個題寫代碼做的話很麻煩,而且我也不一定能寫出來,所以我直接就是用的excel來計算的時間和。
使用excel的做法
1.先把文件中的時間復制到excel中。
2.把日期和時間分到兩列。
分成兩列的步驟:
選中要分列的數據(注意!只能選擇一列,多列不可操作),在上面找到數據,再找到分列這個操作。
?點進去后選擇分隔符號,點擊下一步。
?只選擇空格,不選擇其他的,之后點擊下一步。
?格式可以選擇常規,也可以選擇日期,沒太大影響。
?最后點擊完成即可。
最后得到的結果,不知道為什么后面會有0:00,但是不影響結果計算,主要是把時間單獨分出一列來即可。
3.計算一天中上下班的時間差?
?在新的一列中這樣寫出計算公式,并得出結果,往下復制,excel會根據對應的單元格得出相應的數據,復制幾個后,可以點右下角的加號向下拉,就能得出兩個單元格的的差值,就是一天中上班的時間。
4.計算每天上班時間的和
5.換算成秒
計算出時間總和的時間單位為天,一天24*60*60s = 86400s。最后結果為5101913s。
在藍橋杯官網提交結果后,運行成功通過。
?二、雙鏈表
單鏈表只可以實現數據不斷向前尋找,不可以向后尋找,為了提高效率,從而引出雙鏈表。
雙鏈表的每個節點有兩個指針,一個指向后一個節點,一個指向前一個節點,這樣既可以向前尋找數據,也可以向后尋找。
?雙鏈表的初始化及基本操作。
class Node: def __init__(self, data=None): self.data = data self.next = None self.prev = None class DoublyLinkedList: def __init__(self): self.head = None # 在鏈表末尾添加節點 def append(self, data): if not self.head: self.head = Node(data) else: new_node = Node(data) current = self.head while current.next: current = current.next current.next = new_node new_node.prev = current # 在鏈表開頭添加節點 def prepend(self, data): new_node = Node(data) new_node.next = self.head if self.head: self.head.prev = new_node self.head = new_node # 刪除指定數據的節點 def delete(self, data): current = self.head if current and current.data == data: self.head = current.next if self.head: self.head.prev = None return while current and current.data != data: current = current.next if current.next: current.next.prev = current.prev if current.prev: current.prev.next = current.next # 打印鏈表 def print_list(self): current = self.head while current: print(current.data, end=' ') current = current.next print() # 示例
dll = DoublyLinkedList()
dll.append(1)
dll.append(2)
dll.prepend(0)
dll.print_list() # 輸出: 0 1 2
dll.delete(1)
dll.print_list() # 輸出: 0 2