范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Leetcode题号26删除数组中的重复元素,104求二叉树的最大深度

  题目一、删除数组中的重复元素(简单)
  给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
  由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。
  将最终结果插入 nums 的前 k 个位置后返回 k 。
  不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
  判题标准:
  系统会用下面的代码来测试你的题解:
  int[] nums = [...]; // 输入数组
  int[] expectedNums = [...]; // 长度正确的期望答案
  int k = removeDuplicates(nums); // 调用
  assert k == expectedNums.length;
  for (int i = 0; i < k; i++) {
  assert nums[i] == expectedNums[i];
  }
  如果所有断言都通过,那么您的题解将被 通过。
  示例 1:
  输入:nums = [1,1,2]
  输出:2, nums = [1,2,_]
  解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。
  示例 2:
  输入:nums = [0,0,1,1,1,2,2,3,3,4]
  输出:5, nums = [0,1,2,3,4]
  解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。
  来源:力扣(LeetCode)
  链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array
  著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
  分析题意
  根据题意,要去除数组中的重复元素,我们可能第一想到的是找到重复项,然后把所有的重复项遍历删除就可以了,但是出题人想要我们细读题意: 1) 数组是升序的, 2) 元素只要在数组中出现一次就能满足条件,3) 最后的返回结果和数组的实际长度可以不相同,比如删除重复项后有5个元素,实际数组中也7个元素也算通过的,只要把5个不重复的元素放到数组前面也可算通过。
  我的解题思路
  设置一个初始化的变量为index, 默认值为0, index用来记录重复元素重新赋值在数组中的位置。当数据发生变化时,那么发生变化的位置i 对应的值赋值给index, 同时需要index向后移一位,index的值每加1表示不重复元素+1一个,因此最后返回的index即为不重复元素的个数。
  public int removeDuplicates(int[] nums) {         int t = 0;         for (int i = 0; i < nums.length; i++) {             if (i == 0 || nums[i] != nums[i - 1]) {                 nums[t++] = nums[i];             }         }         return t;     }
  执行结果:
  官方方案
  快慢指针法, 用2个指针分别为fast和slow分别赋值为1,指向第一个位置,fast指针每次移动一位。当fast与fast-1指向的元素不相同时,那么slow指针向右移动一位,同时将nums[fast]赋值给nums[slow]。
  public int removeDuplicates1(int[] nums) {         int n = nums.length;         if (n == 0) {             return 0;         }         int fast = 1;         int slow = 1;         while (fast < n) {             if (nums[fast] != nums[fast - 1]) {                 nums[slow] = nums[fast];                 ++slow;             }             ++fast;         }         System.out.println(Arrays.toString(nums));         return slow;     }
  题目二、求二叉树的最大深度(简单)
  给定一个二叉树,找出其最大深度。
  二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
  说明: 叶子节点是指没有子节点的节点。
  示例:
  给定二叉树 [3,9,20,null,null,15,7],
  3
  /   9 20   /   15 7   返回它的最大深度 3 。   来源:力扣(LeetCode)   链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree   著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。   我的解题思路   要求树的深度,我的脑海里的第一印象浮现出来的是广度优先算法 和深度优先算法 ,求解深度比较适合用深度优先算法,因为该算法采用中左右的思想,先从左子树遍历到树的最深处,然后再切换到右子树。   发现用深度优先算法可以遍历出整个树: 先用一个栈,将root节点放入到栈里,然后再看root的左子树和右子树为不为空,右子树不为空,那么先让右子树进栈,然后再左子树,因为栈的特性是先进后出,因此每次需要右先进才能达到左子树先遍历得到的结果。   private static List DepthTraverse(TreeNode head) { List results = new ArrayList<>(); Stack stack = new Stack<>(); stack.add(head); while (!stack.isEmpty()) { TreeNode node = stack.pop(); results.add(node.getData()); if (node.right != null) { stack.add(node.right); } if (node.left != null) { stack.add(node.left); } } return results; }   但是我还是不好去计算深度,然后我就暂时放弃了,采用另外一种思路,递归可以不可以实现?   根据二叉树的特性,每个节点最多只有2个节点,并且左子树和右子树均可能为空,因此我们可以想向一下,可以把一个二叉树当做一个小二叉树不断迭代生成的一个大二叉树。   比如上图,我们可以把2, null, 3当做一个二叉树,然后再把2,null,3当做1的左子树。   我们只需要将每次的左子树右子树计算的递归当做一层深度+1, 每次递归取左子树和右子树中最大值+1即可。   public int maxDepth(TreeNode root) { return root == null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; }   看了一下官方的题解,思路和我写的一样,推荐使用递归解法。

为什么现在还有很多人不签手机银行,宁可去银行网点排队?尽管当前非现金支付十分流行,微信支付宝给人们提供了不少方便,但是作为银行开发的手机银行APP,应该说是功能最齐全的APP。那为什么还有很多人不签手机银行,宁可去银行网点排队呢?其原余承东再次被予以重任,任正非把华为的方向盘,交给了他关于华为手机掌门人余承东,很多人是非常熟悉的,1993年加入华为,在负责消费者业务之前,历任3G产品总监无线产品行销副总裁无线产品线总裁欧洲片区总裁。因为在这些岗位表现非常突出,所比特币一日地狱一日天堂最近的比特币和狗狗币爆火,特别是比特币,查询欧易OKEx平台可知以现在价格37000美元算,近一年翻了4倍而最高点时侯翻了7倍,10年翻了一万倍,这是是一个世纪内的大狂欢,最近朋友吴汉明与其5nm芯片上做无用功,不如吃透55nm芯片作为未来万物互联时代的基础所在,一度被称之为是如同石油一样的基础能源。由于我国近些年来在科技上的飞速发展,尤其是华为5G在世界舞台上大放异彩,使老美彻底按捺不住,从芯片入手打压比特币下跌,马斯克考虑在俄罗斯设厂如今众所周知的埃隆。马斯克一度成为比特币最忠诚的粉丝,使得人们已经忘记马斯克现在也在担任一家太空探索科技公司的CEO,甚至有人已经忘了他是特斯拉的CEO,大家只知道他一直在比特币的重磅荣耀50新机全球首发高通骁龙旗舰U近日,高通骁龙778G处理器即将公布,而目前荣耀CEO赵明在公开场合已经宣布荣耀50系列将全球首发搭载骁龙778G移动平台,同时,荣耀后续将会在各个消费终端使用高通公司的产品,包括人落水后为什么会往下沉,死后又会浮上水面?首先,河湖水面比较平静的话,只有不会游泳的人落水后才会下沉。会游泳的人想沉下去还得费点儿力气呢。其次,淡水中的溺毙者并不会马上浮出水面,一般得等几天。人体的密度确实是略大于水的,但地球为什么会转?谢谢你的邀请!宇宙的一切星球都是自然运动的,如果它停止了运动就会脱离轨道变成流星。不仅是地球,宇宙大多天体自传和公转的动力,至今为止没有准确的答案,或者说答案都有争议。答案是所有自如何避免下一代遗传银屑病?银屑病俗称牛皮癣,是一种慢性炎症性皮肤病,病程较长,有易复发倾向,有的病例几乎终生不愈。该病发病以青壮年为主,对患者的身体健康和精神状况影响较大。临床表现以红斑,鳞屑为主,全身均可5G全球第一,6G也取得关键进展,中国稳了本文原创,请勿抄袭和搬运,违者必究全球第一的中国5G全国各地都实现了4G网络普及,哪怕偏远山村地区,也能连接上互联网。不过5G会成为未来数年内的主要潮流,中国及世界各国都在全力建设比特币对中国可能会诱发的风险不可低估作者莫开伟系中国知名财经作家近两日,币圈经历了一次过山车,不少投资者也经历了一次投资浩劫比特币暴跌至每枚3万美元左右,其他加密数字货币如以太坊狗狗币莱特币等也都狂跌了百分之五十左右
台积电自由出货的大门正在被关上,后果很严重点击关注,每天精彩不断!导读台积电自由出货的大门正在被关上,后果很严重!众所周知,现在半导体集成电路芯片早就成为了整个科技领域发展的核心,随着科技市场对半导体芯片的需求不断增加,也河北推进科技计划项目揭榜挂帅近日,河北省印发河北省科技计划项目揭榜挂帅组织实施工作指引,从项目的组织管理立项实施等方面创新支持模式,推动更多优质的科技成果在河北转化落地,促进科技供给与产业需求有效对接。当前,游戏行业最大并购案受阻,动视暴雪接受内幕交易调查记者彭新编辑随着动视暴雪同意被微软以每股95美元的价格收购,监管问题也接踵而至。美国东部时间4月15日,动视暴雪在向美国证券交易委员会(SEC)提交的文件披露,正在配合监管机构内幕比别人更需要午睡?基因学家揭露关键原因这项迄今为止规模最大的研究,发表在自然通讯杂志上,MGH团队与西班牙穆尔西亚大学的同事以及其他几个机构合作,找到了人体中数十个控制白天午睡倾向的基因区域,他们还使用初步证据来证明午今日热点360推出元宇宙产品N世界滴滴启动纽交所退市工作1罗永浩回应没勇气再做手机因为要烧投资人的钱,确实没这勇气了4月16日,在回复网友有没有勇气再做款手机的提问时,罗永浩回应不再做手机因为要烧投资人的钱,所以我确实没这勇气了。他还和今日头条每天收入二个包子钱,你还会继续坚持下去吗?会继续坚持下去的,因为现在每天几分,几毛都坚持做,每天能收入二个包子钱更要做了。算算二个包子多少钱,一个菜包2元,一个肉包少说也得2元5角,合起来每天4一5元,很不少了。在头条上,特斯拉今日复工?被列为必需复工企业,但近期产能仍将受限21世纪经济报道记者彭苏平上海报道4月18日,有消息称,特斯拉上海工厂可能于当天下午晚些时候恢复生产。特斯拉方面并未正面回应这一信息,而是称,将按照政府的要求积极抗疫并安排各项复产桌面好物推荐,扩展面积提升效率和舒适感CiaoBello,我是老房。趁着最近居家办公终于有时间把家里电脑桌面整理了一遍,主要核心思想就是扩展桌面可用面积,提升工作效率。在办公的时候多屏幕多设备互动,地方小了着实不行。不推特启用毒丸计划抵御马斯克的敌意收购推特周五采取了一项有期限的股东权益计划(俗称毒丸计划),以期保护其免受恶意收购竞标的影响,并采取措施阻止亿万富翁埃隆马斯克提出将公司私有化的提议。据悉,推特董事会制定了股东权益计划云游戏,限制游戏画质链接与不正当竞争继续看腾讯诉菜鸡云游戏案。各方意见腾讯公司认为被告限制涉案游戏画质功能及信息链接的行为构成不正当竞争。腾讯公司认为低画质试玩点击游戏登录页中的栏目及游戏公告活动营销等链接均无法正常科技早报中国空间站关键技术验证阶段完美收官字节跳动以每股142美元回购期权记者于浩中国空间站关键技术验证阶段完美收官4月17日下午3时,在国务院新闻办公室举行的新闻发布会上,中国载人航天工程办公室主任郝淳表示,神舟十三号乘组共在轨飞行183天,创造了中国