【leetcode哈希表#3】快乐数(set)-编程思维

快乐数 力扣题目链接(opens new window) 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 True ;不是,则返回 False 。 示例: 输入:19 输出:t

【c++ 数据结构:链表】二刷leetcode707设计链表-编程思维

【C++链表】 使用c++重新写一遍LeetCode707设计链表 目的是熟悉c++中链表的操作 知识点 C++链表节点的实现 在c++中,一般通过结构体来定义链表的节点,也需要写构造函数(使用初始化列表) 如: struct ListNode{ int val; ListNode* next; //要写构造函数 //结构体中的构造

leetcode-343. 整数拆分-编程思维

题目来源 343. 整数拆分 题目详情 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n = 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 输入: n = 10 输出: 36 解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。

个人文章-编程思维

题目描述编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例 1:输入: s = ["h","e","l","l","o"] 输出: ["o","l","l","e","h"]示例 2:输入: s = ["H","a","n","n","a","h"] 输出: ["h

个人文章-编程思维

什么双指针没刷算法之前,一听双指针,感觉很厉害的样子。实际上呢?也的确是一个不错的解题思路方式。在LeetCode上的双指针是一大类题目的解决方式,看一下,发现有近200题是双指针类型的,如下图:由此可见,双指针的重要性。那,什么是双指针?在说双指针之前,我们先看一下**单指针**。比如我们平常遍历一个数组,都是定义一个变量let i,通过这个变量i可以访问到每一项的值,这是常用的方式,可以姑且称

【leetcode哈希表#1】有效的字母异位词(数组)-编程思维

有效的字母异位词 力扣题目链接(opens new window) 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 说明: 你可以假设字符串只包含小写字母。 思路 暴力法 两层for循环

【leetcode链表#12】链表相交-编程思维

链表相交 同:160.链表相交 力扣题目链接(opens new window) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例 1: 示例 2: 示例 3: 思路

二叉树的序列化与反序列化-编程思维

前言 二叉树的序列化是指将二叉树转化成一个字符串,便于存储或者通过网络传输。反序列化就是将字符串通过相同的规则转化成二叉树。 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一

个人文章-编程思维

Day2977.有序数组的平方题目建议: 本题关键在于理解双指针思想暴力解法:先平方 ,后排序。双指针法左负数,中间接近零,右正数,平方后两边大中间小左右2个指针从头开始,互相比大小,谁更大就把值赋给新的数组,再向中间移动一格,注意从数组的最大下标开始赋值以满足非递减。注意i<=j否则最后一个元素无法赋值到新数组中209.长度最小的子数组滑动窗口,也是双指针的一种值大于s,比较长度后左端就要

【leetcode链表#9】图解:两两交换链表节点-编程思维

两两交换链表中的节点 力扣题目链接(opens new window) 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 思路 这里还是要应用虚拟头节点,不然交换链表头节点的操作会与交换其他节点时不同 交换的过程其实不难理解,但是代码实现过程需要注意很多细节 下面是交换过程的图解 首先,定义一个虚拟头节点 并让当前指针

【leetcode链表#7】设计一个链表并实现常见的操作方法-编程思维

设计链表 题目 力扣题目链接 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的