代码编织梦想

217. 存在重复元素
复习知识点:本题常见的方法如下两种,可以排序然后看前后相邻的元素是否相等,也可以将元素依次存入哈希表,然后每次放入新元素的时候看是否当前的元素已经出现在哈希表中。

// class Solution {
// public:
//     bool containsDuplicate(vector<int>& nums) {
//         sort(nums.begin(), nums.end());
//         // 排序后如果前后相等说明存在重复字符
//         for(int i = 0;i < nums.size() - 1;++i)
//         {
//             if(nums[i] == nums[i + 1])
//                 return true;
//         }
//         return false;
//     }
// };

class Solution{
public:
    bool containsDuplicate(vector<int>& nums){
        unordered_set<int> hash;
        for(int num : nums)
        {
            if(hash.find(num) != hash.end())
            {
                return true;
            }
            // 新插入当前元素看是不是已经存在于哈希表中
            hash.insert(num);
        }
        return false;
    }
};

206. 反转链表
复习知识点:本题没有使用头插法,而是用三个节点进行记录,然后将当前节点的后继指针指向其前驱节点,然后每次更新前驱节点和下一个节点。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* cur = head; 
        ListNode* pre = nullptr;
        while(cur)
        {
            // 从head开始,一次将Next指针指向前一个元素
            ListNode* behind = cur -> next;
            // 当前节点的下一个节点为前驱节点
            cur -> next = pre;
            // 当前节点记为前驱节点
            pre = cur;
            // 当前节点后移
            cur = behind;
        }
        return pre;
    }
};

202. 快乐数
复习知识点:本题按照题意进行判断,对每一个位置的元素拿出来进行平方和计算,然后每次计算完成之后更新当前的数据,注意,本题需要留意,如果之前已经出现过该结果,那么说明出现死循环,因此我们使用哈希表进行每次结果的保存,然后进行查询。

class Solution {
public:
    // 求出全部位数的平方和
    int my_sum(int num)
    {
        int sum = 0;
        while(num)
        {
            sum += (num % 10) * (num % 10);
            num /= 10;
        }
        return sum;
    }
    bool isHappy(int n) {
        // 如果一个结果已经出现,结果后面又出现,
        // 那么这个时候再计算就还是会出现死循环,因此需要对之前的元素记录
        unordered_set<int> hash;
        while(1)
        {
            if(my_sum(n) == 1)
                return true;
            else if(hash.find(my_sum(n)) != hash.end())
                return false;
            else
                hash.insert(my_sum(n));
            // 更新数据
            n = my_sum(n);
        }
    }
};

191. 位1的个数
复习知识点:1<<i 是将1左移i位,即第i位为1,其余位为0;例如1<<2 则0001->0100;n&(1<<i)是将左移i位的1与n进行按位与,即为保留n的第i位,其余位置零;如果n第i位为0,则n&(1<<i)的值为0;否则不为0;常用if(n&(1<<i)==0)用于判断n的第i位是否为0。

class Solution {
public:
    int hammingWeight(uint32_t n) { 
        int res = 0;
        for(int i = 0;i < 32;++i)
        // 是将左移i位的1与n进行按位与,即为保留n的第i位,其余位置零
            if((n & (1 << i)) != 0)
                ++res;
        return res;
    }
};
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44614524/article/details/129642601

leetcode题解日练--2016.6.28-爱代码爱编程

编程日记,尽量保证每天至少3道leetcode题,仅此记录学习的一些题目答案与思路,尽量用多种思路来分析解决问题,不足之处还望指出。标红题为之后还需要再看的题目。 今日题目:1、反转比特位;2、移除链表元素;3、回文链表;

[ leetcode ] #25. reverse nodes in k-group(翻转相邻的k个元素)_下木南的博客-爱代码爱编程

题目:25. Reverse Nodes in k-Group Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k is a positive integer and is less than or equ

leetcode编程题解1000题 c++版(更新...)_孤帆扁舟去的博客-爱代码爱编程

leetcode编程题解目录 编程语言:C++ 不断更新中… 按题号查询 题号题目难度标签1两数之和简单2两数相加中等3无重复字符的最长子串中等4寻找两个有序数组的中位数困难5最长回文子串中等6Z 字形变换中等7整数反

剑指offer-leetcode刷题总结(一)19.9.8-9.21_爱读书的小寿星的博客-爱代码爱编程

目录 剑指offer普通题:  2019/9/8:  二维数组查找 2019/9/8:  替换空格 2019/9/9:  smallRotateNum 2019/9/9:  斐波那契系列 2019/9/9:  twoStack 2019/9/11:  二进制中1的个数 剑指offer链表题: 2019/9/20:  从尾到头打印链表 2

LeetCode刷题(十七)-----链表-------easy部分(Java、C++)-爱代码爱编程

160. 相交链表 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node wi

LeetCode 206. 反转链表(C++实现)-爱代码爱编程

一、题目描述 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题?   二、迭代法 核心思想: 设立三个指针,依次完成反转,在反转之前需要存储下一

Leetcode-1-- 数组\字符串\排序\栈队列-爱代码爱编程

这里写目录标题 排序\查找归并排序快速排序Top K数组283 移动零 && 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面剑指offer003 数组中重复的数字剑指 Offer 56 - I. 数组中数字出现的次数剑指 Offer 04. 二维数组中的查找顺子山型数组跳跃游戏二维无序数组找第一个不存在自然数541最短无序

Leetcode(力扣)题解--C++实现(一)-爱代码爱编程

Leetcode(力扣)题解–C++实现(一) 文章目录 Leetcode(力扣)题解--C++实现(一)题目 1 [平方数之和](https://leetcode-cn.com/problems/sum-of-square-numbers/)题目 2 [两数之和 II - 输入有序数组](https://leetcode-cn.com/prob

[C++]Leetcode超高效刷题顺序及题目详解笔记(持续更新中)-爱代码爱编程

一.前言 博主最近在LeetCode上用C++练习。一路走来踩过一些坑,做了一些总结和笔记,分享给需要的人。 LeetCode中文版:https://leetcode-cn.com/ 二.介绍 LeetCode 是一个非常棒的平台,收集了许多公司的面试题目。相对其他平台而言,有着下面的几个优点: 题目全部来自业内大公司的真实面试不用处理输入输出精力

1.leetcode-爱代码爱编程

Leetcode刷题 数组 数组 1th:1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 //暴力求解 class Solution { public: ve

LeetCode_LinkedList_92. Reverse Linked List II 反转链表 II(C++/Java)【递归】-爱代码爱编程

目录 一,题目描述 英文描述 中文描述 二,解题思路 三,AC代码 C++ Java 四,解题过程 第一博   一,题目描述 英文描述 Given the head of a singly linked list and two integers left and right where left <= right,

Java算法:LeetCode剑指offer(第二版)算法Java版1-68题-爱代码爱编程

《剑指 Offer(第 2 版)》系列 本书精选谷歌、微软等知名 IT 企业的典型面试题,系统地总结了如何在面试时写出高质量代码,如何优化代码效率,以及分析、解决难题的常用方法。 English Version 题解 以下所有题目均来源 LeetCode 中国官网,题解由 doocs/leetcode 贡献者 提供,正在完善中,欢迎贡献你的题解!

刷Leetcode算法题目日志(C++)-爱代码爱编程

刷Leetcode算法题目日志 文章目录 前言刚开始使用Leetcode遇到的问题有关C++代码函数方面的知识点C++常用容器(转载)string容器vector容器deque容器stack、queue容器list容器set/multiset容器unordered_set容器map/multimap容器unorder_map容器algorithm

LeetCode - 刷题记录-爱代码爱编程

文章目录 LeetCode 203 移除链表元素LeetCode 200. 岛屿数量LeetCode 92. 反转链表IILeetCode 54. 螺旋链表LeetCode 42. 接雨水LeetCode 93. 复原ip地址LeetCode 199. 二叉树的右视图LeetCode 124. 二叉树中的最大路径和LeetCode 82. 删除排序

leetcode链表的基本操作---C++实现-爱代码爱编程

链表的基本操作 83 删除排序链表中的重复元素203 移除链表元素707.设计链表206反转链表24.两两交换链表中的结点19. 删除链表的倒数第 N 个结点面试题 02.07. 链表相交142.环形链表II21 合并两个有序的链表143.重排链表86 分割链表234. 回文链表148.排序链表23.合并K个升序链表876.链表的中间结点2. 两数

leetcode刷题方法总结---链表全解_slow just fast的博客-爱代码爱编程

Leetcode刷题方法总结—链表全解 文章目录 Leetcode刷题方法总结---链表全解链表基本知识回忆题型一:移除链表元素题型二:完善链表设计题目三:翻转链表元素题目四:范围交换链表元素题目五:指定删除链表元

leetcode solutions - part 1-爱代码爱编程

回溯: 字符串的排列 回溯:78. 子集 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例

leetcode——c++突击面试_c++ 面试突破_stephenbarrnet的博客-爱代码爱编程

C++突击面试 1. 编译内存相关1.1. C++ 程序编译过程1.2. C++ 内存管理1.3. 栈和堆的区别1.4. 变量的区别1.5. 全局变量定义在头文件中有什么问题?1.6. 内存对齐1.7. 什么是