随笔分类 - 算法编程
摘要:1、55. 跳跃游戏 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1: 输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后
阅读全文
摘要:1、19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。 /** * Definitio
阅读全文
摘要:1、257. 二叉树的所有路径 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输入: 1 / \ 2 3 \ 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 这道题给我们一个
阅读全文
摘要:1、34. 在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决
阅读全文
摘要:1、61. 旋转链表 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 链表中节点的数目在范围 [0, 500] 内 -100 <= Node.val <= 100 0 <= k <= 2 * 109 这道旋转链表的题和之前那道 Rotate Array 很类似,但是
阅读全文
摘要:1、strcpy函数的实现 编写 strcpy 函数 已知 strcpy 函数的原型是 Char *strcpy(char *strDest,const char *strSrc); 其中 strDest 是目的字符串, strSrc 是源字符串。 (1) 不调用 c++ 、 /c 的字符串库函数,
阅读全文
摘要:1、滑动窗口的最大值 /** 面试题65:滑动窗口的最大值* 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。* 例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,* 他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,
阅读全文
摘要:1、451. 根据字符出现频率排序 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 示例 1: 示例 2: 示例 3: 思路:首先将字符统计并存到 map 中,将map中内容存到vector中,进行频率排序,之后输出结果。
阅读全文
摘要:1、718. 最长重复子数组 给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。 示例 1: 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释: 长度最长的公共子数组是 [3, 2, 1]。 这道题给了我们两个数组A和B,让我们返回连个数
阅读全文
摘要:1、415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 思路:和链表相加类似,求进位。 2、43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 示例
阅读全文
摘要:0、在线测试问题: 1、本地通过,但在线测试没有通过率的问题: 解决方法: (1)将程序包在下面代码里面试一试。 (2)将程序别包含在上面代码中再试一试。 2、考虑一下边界条件问题 1、题目描述一:读入一个字符串str,输出字符串str中的连续最长的数字串 输入描述: 个测试输入包含1个测试用例,一
阅读全文
摘要:1、第一类: 需查找和目标值完全相等的数 举例:704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 2、第二类: 查找第一个不小于目标值的数,可变形
阅读全文
摘要:1、剪绳子 给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]*k[1]*...*k[m]可能的最大乘积是多少? 例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三段,此时得到的最大乘积是18
阅读全文
摘要:1、最长的重复子串 寻找一个字符串中最长的重复子串 最大后缀方法思路: 1. 用字符串指针数组保存用户输入的字符串的所有后缀字符串; 2. 将后缀字符串集合进行排序; 3. 比较相邻字符串的公共子串长度,找到长度最大值,保存相应字符串即为所求 空间复杂度:求长度为n的字符串的后缀,需要O(n)的空间
阅读全文
摘要:剑指offer题目总结: https://www.cnblogs.com/dingxiaoqiang/category/1117681.html 版权归作者所有,任何形式转载请联系作者。作者:马孔多(来自豆瓣)来源:https://www.douban.com/note/332117149/ (1)
阅读全文
摘要:1、1. 两数之和 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。数组是无序的,返回对应下标。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 这道题好就好在最低位在链表的开头,所以可以在遍历链表的同时按从低到高的顺序直接相加。while 循环的条件两个链表中只要有一个
阅读全文
摘要:1、14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 示例 2: 这道题让我们求一系列字符串的共同前缀,没有什么特别的技巧,无脑查找即可,我们定义两个变量i和j,其中i是遍历搜索字符串中的字符,j是遍历字符串集中的每个字符串。
阅读全文
摘要:1、不用加减乘除做加法 剑指offer面试题47:不用加减乘除做加法写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 2、交换两个变量 不使用新的变量,交换两个变量的值。 (1)基于加法的方法 (2)基于异或运算
阅读全文
摘要:1、动态规划求解 问题描述:(01背包问题)有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 对于这种问题,我们可以采用一个二维数组去解决:f[i][j],其中i代表加入背包的是前i件物品,j表示背包的承重,f[i][j]表示当前状态下能放进背包里
阅读全文
摘要:1、11. 盛最多水的容器 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器
阅读全文