
力扣
闫++
当无法抉择时,就走最难的那条路。
展开
-
考古题—剑指offer67:字符串转整数
以一个考古题开始新的一天,训练一下自己的代码能力,题意就不贴了,说下注意点吧: 先除去开始的空格 判断正负 开头的0舍去 溢出判断 我做了两个,第一段代码没有经过优化,一遍ac,但是问题很多,所以优化了一下成了第二段代码,其中还是有 class Solution { public: int strToInt(string str) { int len=str.length(); if(len==0) return 0; in原创 2020-10-29 10:06:38 · 332 阅读 · 1 评论 -
二叉树的最大深度——基础题复习系列
力扣原题 分析: 要二叉树的深度,那么就要往深度方向递归,每深一层,就将层数++,由于左右子树的存在,所以我们要将左右进行比较,max的加1。 递归法:深度优先 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), rig.原创 2020-07-28 09:51:38 · 196 阅读 · 0 评论 -
最长连续子序列(揭开乱序数组的统一思路)
题目: 输入两行,第一行包括一个整数n(1≤n≤10^5 ),第二行包含n个整数,分别代表arr[i]。 输出一个整数,代表最长连续子序列的长度。 思路: 所要的是连续的子序列。比如第一个里面是1、2、3、4,那既然是连续的子序列,排序就可以了。然后顺序遍历一遍找到连续的长度就可。这个解法属实普通,在面试的时候面试官一般还会让继续优化。 重点来了重点来了重点来了 重要的话说三遍,当数组问题的时间复杂度一般是nlgn,如果此时需要继续优化,那就是n。能完成On时间复杂度的数据结构首选哈希表。 所以,此处我们原创 2020-07-22 10:00:33 · 1084 阅读 · 0 评论 -
数学来辅助做题——乘积最大子数组
多的不说了,和前几天的差不多,直接上题。 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 暴力: class Solution { public: int maxProduct(vector<int>原创 2020-05-21 16:01:51 · 248 阅读 · 0 评论 -
蛮特殊的动态规划——和为k的子数组
之前已经讲过不少动态规划,无非就是申请一个数组记录之前的结果。今天的每日一题之前虽然做过,但是复习的时候发现忘了思路。于是单独摘出来进行记录。 先看题吧,一个很朴素的题。 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 题目: 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 思路: 题目越短,思路越简单,优化越难。 来看这道题,就是找连续子数组的和满足k就好了。最简单的方式,暴力遍历所有数组。原创 2020-05-17 09:55:17 · 538 阅读 · 0 评论 -
二叉树的层序遍历——bfs和dfs起始章节
在很多问题中,我们都要对所有情况进行遍历,二叉树是其中的一项,再比如矩阵类。正好每日一题做到了,就顺便拿出来总结一下遍历。 概念性的东西我就不说了,直接说我的理解,bfs就是从此点往四周遍历,就像水波往外扩散,特点就是先近后远,适合最短距离这种的。怎么实现?队列,先进先出,离得近的先进,近的下一个进,循环。 上本题。 题目: 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / 9 20 /原创 2020-05-14 10:27:07 · 430 阅读 · 0 评论