如何用chat-gpt 刷大廠算法代碼-面試題之阿里巴巴篇1
寫(xiě)代碼劍指 Offer 24\. 反轉(zhuǎn)鏈表
以下是 Python 代碼實(shí)現(xiàn),用于反轉(zhuǎn)一個(gè)單鏈表:
```python
class ListNode:
? ? def __init__(self, val=0, next=None):
? ? ? ? self.val = val
? ? ? ? self.next = next
def reverseList(head: ListNode) -> ListNode:
? ? prev = None
? ? curr = head
? ? while curr:
? ? ? ? next_node = curr.next
? ? ? ? curr.next = prev
? ? ? ? prev = curr
? ? ? ? curr = next_node
? ? return prev
```
該算法使用三個(gè)指針 prev、curr 和 next_node 來(lái)完成鏈表的反轉(zhuǎn)。在循環(huán)中,每次將當(dāng)前節(jié)點(diǎn) curr 的 next 指向前驅(qū)節(jié)點(diǎn) prev,然后將 prev 和 curr 向后移動(dòng)一個(gè)位置,直到 curr 到達(dá)鏈表末尾,最后返回反轉(zhuǎn)后的頭節(jié)點(diǎn) prev。
劍指 Offer 53 \- I\. 在排序數(shù)組中查找數(shù)字
以下是 Python 代碼實(shí)現(xiàn),用于在排序數(shù)組中查找數(shù)字 target 的出現(xiàn)次數(shù):
```python
from typing import List
def search(nums: List[int], target: int) -> int:
? ? left, right = 0, len(nums) - 1
? ? while left <= right:
? ? ? ? mid = (left + right) // 2
? ? ? ? if nums[mid] > target:
? ? ? ? ? ? right = mid - 1
? ? ? ? elif nums[mid] < target:
? ? ? ? ? ? left = mid + 1
? ? ? ? else:
? ? ? ? ? ? break
? ? else:
? ? ? ? return 0
? ?
? ? count = 1
? ? i, j = mid - 1, mid + 1
? ? while i >= left and nums[i] == target:
? ? ? ? count += 1
? ? ? ? i -= 1
? ? while j <= right and nums[j] == target:
? ? ? ? count += 1
? ? ? ? j += 1
? ? return count
```
該算法使用二分查找的思想來(lái)找到目標(biāo)值 target 在排序數(shù)組中的位置 mid,然后從 mid 向左和向右分別遍歷,統(tǒng)計(jì)目標(biāo)值 target 出現(xiàn)的次數(shù)。如果 target 不在數(shù)組中,則返回 0。
最大子序和 用代碼實(shí)現(xiàn)
以下是 Python 代碼實(shí)現(xiàn),用于求解最大子序和:
```python
from typing import List
def maxSubArray(nums: List[int]) -> int:
? ? ans = nums[0]
? ? sum = 0
? ? for num in nums:
? ? ? ? if sum > 0:
? ? ? ? ? ? sum += num
? ? ? ? else:
? ? ? ? ? ? sum = num
? ? ? ? ans = max(ans, sum)
? ? return ans
```
該算法使用動(dòng)態(tài)規(guī)劃的思想來(lái)求解最大子序和。其中,ans 表示當(dāng)前最大的子序和,sum 表示當(dāng)前的連續(xù)子序和。在遍歷數(shù)組 nums 的過(guò)程中,如果 sum 大于 0,則將 sum 加上當(dāng)前元素 num,否則將 sum 更新為當(dāng)前元素 num。然后每次更新 ans 的值為 ans 和 sum 中的較大值,最終返回 ans 即可。
加Q裙 811604914,在這里了解AI在各行各業(yè)的運(yùn)用GPT+設(shè)計(jì)師、新媒體、程序員、律師,② ?設(shè)計(jì)師、新媒體、程序員、律師、金融分析師、廚師……各職業(yè)AI實(shí)戰(zhàn)應(yīng)用演示,淘汰你的不是AI,而是你不會(huì)使用AI。在這里了解AI在各行各業(yè)的運(yùn)用,用上AI,跟著時(shí)代大勢(shì)走,轉(zhuǎn)變思維方式,成為新的一輪互聯(lián)網(wǎng)時(shí)代風(fēng)口的受益人。
求求小主關(guān)注,點(diǎn)贊,收藏學(xué)習(xí),持續(xù)更新AI技術(shù)。