码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [lettcode top 100] 0917 两数之和,有效的括号


    目录

    1. 两数之和

    20 有效的括号


    1. 两数之和

    1. 两数之和 - 力扣(LeetCode)

    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

    思路:

    暴力解法,双层循环

    1. class Solution:
    2. def twoSum(self, nums: List[int], target: int) -> List[int]:
    3. n = len(nums)
    4. for i in range(n):
    5. for j in range(i+1,n):
    6. if nums[i] +nums[j] == target:
    7. return [i,j]

    优化:

    使用哈希表,可以降低查询target-num时候的复杂度:O(n)->O(1)。(具体为什么能降低,这是哈希表的知识)。将num逐步放入哈希表中,之后target-num在哈希表中寻找。(c++ and python)

    1. class Solution:
    2. def twoSum(self, nums: List[int], target: int) -> List[int]:
    3. # 哈希表
    4. hashtable = {}
    5. for i,num in enumerate(nums):
    6. if target - num in hashtable:
    7. return [i,hashtable[target-num]]
    8. hashtable[num] = i
    9. return []
    1. class Solution {
    2. public:
    3. vector<int> twoSum(vector<int>& nums, int target) {
    4. //使用map;存储{index,value};
    5. int n = nums.size();
    6. unordered_map<int,int> hastable;
    7. for (int i = 0;i < n;i++){
    8. if (hastable.find(target-nums[i]) != hastable.end()){
    9. return {i,hastable[target-nums[i]]};
    10. }
    11. hastable[nums[i]] = i;
    12. }
    13. return {};
    14. }
    15. };

    python中的哈希表:dict;collections.OrderedDict()

    cpp中的哈希表:unordered_map;unordered_set;

    20 有效的括号

    20. 有效的括号

    给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

    有效字符串需满足:

    1. 左括号必须用相同类型的右括号闭合。
    2. 左括号必须以正确的顺序闭合。
    3. 每个右括号都有一个对应的相同类型的左括号。

    思路:

    使用栈来处理括号顺序(有效括号的问题);维护一个栈,将‘(’,‘[’,‘{’压入到栈中,使用字典,通过 ')':'(', '}':'{',']':'['   dict[key]与栈中元素匹配。(c++ and python)

    1. class Solution {
    2. public:
    3. bool isValid(string s) {
    4. //使用栈
    5. int n = s.length();
    6. if (n % 2) return false;
    7. unordered_map<char,char> mp = {
    8. {')','('},
    9. {'}','{'},
    10. {']','['}
    11. };
    12. stack<char> stk;
    13. for (char& ch:s){
    14. if (mp.count(ch)){
    15. if (stk.empty() || mp[ch] != stk.top()){
    16. return false;
    17. }
    18. stk.pop();
    19. }
    20. else stk.push(ch);
    21. }
    22. return stk.empty();
    23. }
    24. };
    1. class Solution:
    2. def isValid(self, s: str) -> bool:
    3. n = len(s)
    4. if (n % 2): return False
    5. stack = []
    6. pairs = {
    7. ')':'(',
    8. ']':'[',
    9. '}':'{'
    10. }
    11. for ch in s:
    12. if ch in pairs:
    13. if not stack or pairs[ch] != stack[-1]:
    14. return False
    15. stack.pop()
    16. else:stack.append(ch)
    17. return not stack

  • 相关阅读:
    IP代理中的动态轮换住宅代理是什么?有何作用?
    品达通用_12. pd-tools-core+13. pd-tools-common+14. pd-tools-databases
    纳米/聚合物/化合物/无机材料/多肽/多糖修饰聚苯乙烯微球的研究
    java计算机毕业设计环巢湖区域旅游网站源码+mysql数据库+系统+lw文档+部署
    一些名词 需要注意
    视频云存储平台LntonCVS国标视频平台功能和应用场景详细介绍
    YMatrix 5.0 与天翼云完成产品兼容性认证
    linux-读写锁(rwlock)
    Vue+Elementui历史导航标签实现
    2022“杭电杯”中国大学生算法设计超级联赛(3)
  • 原文地址:https://blog.csdn.net/weixin_51449137/article/details/126912501
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号