如何用chat-gpt 刷大厂算法代码-面试题之阿里巴巴篇1
写代码剑指 Offer 24\. 反转链表
以下是 Python 代码实现,用于反转一个单链表:
```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
```
该算法使用三个指针 prev、curr 和 next_node 来完成链表的反转。在循环中,每次将当前节点 curr 的 next 指向前驱节点 prev,然后将 prev 和 curr 向后移动一个位置,直到 curr 到达链表末尾,最后返回反转后的头节点 prev。
剑指 Offer 53 \- I\. 在排序数组中查找数字
以下是 Python 代码实现,用于在排序数组中查找数字 target 的出现次数:
```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
```
该算法使用二分查找的思想来找到目标值 target 在排序数组中的位置 mid,然后从 mid 向左和向右分别遍历,统计目标值 target 出现的次数。如果 target 不在数组中,则返回 0。
最大子序和 用代码实现
以下是 Python 代码实现,用于求解最大子序和:
```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
```
该算法使用动态规划的思想来求解最大子序和。其中,ans 表示当前最大的子序和,sum 表示当前的连续子序和。在遍历数组 nums 的过程中,如果 sum 大于 0,则将 sum 加上当前元素 num,否则将 sum 更新为当前元素 num。然后每次更新 ans 的值为 ans 和 sum 中的较大值,最终返回 ans 即可。
加Q裙 811604914,在这里了解AI在各行各业的运用GPT+设计师、新媒体、程序员、律师,② 设计师、新媒体、程序员、律师、金融分析师、厨师……各职业AI实战应用演示,淘汰你的不是AI,而是你不会使用AI。在这里了解AI在各行各业的运用,用上AI,跟着时代大势走,转变思维方式,成为新的一轮互联网时代风口的受益人。
求求小主关注,点赞,收藏学习,持续更新AI技术。