欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小白学习打卡03

程序员文章站 2022-05-21 08:33:06
...

出错

  1. Python报错 invalid character in identifier:
    措施:
    说明出现了无效字符 一般都是打入了中文字符 改一下或者重新敲这一行
  2. Python 报错 IndentationError: unindent does not match any outer indentation level
    措施:
    最常见的原因是,的确没有对齐;可以用Notepad++
    视图——显示——显示空格和制表符
    新的Python语法,是不支持的代码对齐中,混用TAB和空格的
    设置——首选项——语言——以空格取代TAB
  3. notepad++ 运行Python文件时,显示找不到文件
    措施:
    在输入文件名前 加入Python Python Hello.py

题目

以下题目来自于Leetcode

1. 最长有效括号
题目描述

输入: “)()())”
输出: 4
解释: 最长有效括号子串为 “()()”

思路:

定义长度 — 循环—找左括号数量 --找右括号数量 —取最小值

Class Solution:
    def longvalidParentheses(self, s:str)->int:
        len=s.length
        while(i<len):
           if(t=="("):
            count0=count0+1
           else:
            count1=count1+1
                  
        if(count0<count1):
            return count0
        else:
            return count1
反思

若是"))()))" 这样就没有办法正确判断了

正确解答

等待匹配的左括号索引、充当“分隔符”的右括号索引。后者入栈因为:当左括号匹配光了,栈还需要留一个“垫底”的“参照物”
class Solution:
def longestValidParentheses(self, s: str) -> int:
maxlen = 0
stack = [-1]
for i in range(len(s)):
if s[i] == “(”:
stack.append(i)
continue
del stack[-1]
if stack == []:
stack.append(i)
else:
maxlen = max(maxlen,i-stack[-1])
return maxlen
作者:hyj8

2.搜索旋转排序数组
题目描述

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。

你可以假设数组中不存在重复的元素。

你的算法时间复杂度必须是 O(log n) 级别。

思路

循环 找目标值 找到返回index 找不到 返回-1

解答
class Solution:
    def search(self, nums: List[int], target: int) -> int:
        for i in range(len(nums)):
            if(nums[i]==target):
                return i
            else:
                return -1

运行成功 不过解答错误

反思

根据时间复杂度 只能选择二分查找
可以具体到这个例子的数值 进行分析

正确解答

class Solution:
def search(self, nums: List[int], target: int) -> int:
if not nums:
return -1
l, r = 0, len(nums) - 1
while l <= r:
mid = (l + r) // 2
if nums[mid] == target:
return mid
if nums[0] <= nums[mid]:
if nums[0] <= target < nums[mid]:
r = mid - 1
else:
l = mid + 1
else:
if nums[mid] < target <= nums[len(nums) - 1]:
l = mid + 1
else:
r = mid - 1
return -1
作者:LeetCode-Solution