实现 share_ptr 实现 share_ptr 参考:面试题:简单实现一个shared_ptr智能指针 shared_ptr的原理:是通过引用计数的方式来实现多个shared_ptr对象之间共享资源。 shared_ptr在其内部,给每个资源都维护了着一份计数,用来记录该份资源被几个对象共享。 在对象被销毁时(也就是析构函数调用),就说明自己不使用该资源了,对象的引用计数减一。 如果引用计数是0,就说明自己是 2021-04-12 algo 面试题
647 回文子串 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例 1: 123输入:"abc"输出:3解释:三个回文子串: "a", "b", "c" 示例 2: 123输入:"aaa"输出:6解释:6个回文子串: 2021-04-12 algo leetcode 算法
9 回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 示例 1: 12输入:x = 121输出:true 示例 2: 123输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 2021-04-09 algo leetcode 算法
394 字符串解码 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的 2021-04-06 algo leetcode 算法
33 搜索旋转排序数组 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7 2021-04-05 algo leetcode 算法
151 翻转字符串里的单词 给定一个字符串,逐个翻转字符串中的每个单词。 说明: 无空格字符构成一个 单词 。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 示例 1: 12输入:"the sky is blue"输出:"blue is sky the" 示例 2: 123输入:" 2021-04-04 algo leetcode 字符串
678 有效的括号字符串 给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 )。 任何右括号 ) 必须有相应的左括号 ( 。 左括号 ( 必须在对应的右括号之前 )。 * 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。 一个空字符串也被视为有效字符串。 示例 1: 12输入: "()&q 2021-04-04 algo leetcode 算法
算法解题模版 链表遍历框架,兼具迭代和递归结构1234567891011121314/* 基本的单链表节点 */class ListNode { int val; ListNode next;}void traverse(ListNode head) { for (ListNode p = head; p != null; p = p.next) { 2021-04-03 algo 模版
525 连续数组 给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。 示例 1: 123输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。 示例 2: 123输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。 注意: 给定的二进制数组的长度不会超过50000。 Solution 2021-04-03 algo leetcode 算法
583 两个字符串的删除操作 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。 示例: 123输入: "sea", "eat"输出: 2解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea" 提示: 2021-04-01 algo leetcode 算法