代码编织梦想

leetcode_217. 存在重复元素-爱代码爱编程

目录 一、题目内容 二、解题思路 三、代码 一、题目内容 给定一个整数数组,判断是否存在重复元素。 如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 示例 1: 输入: [1,2,3,1] 输出: true 示例 2: 输入: [1,2,3,4]

leetcode 376. 摆动序列(dp)-爱代码爱编程

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。 例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个

贪心算法-爱代码爱编程

贪心算法的核心思想就是在解答问题时,每次操作保证达到局部最优,那最后的结果一定会达到全局最优。下面是自己在leetcode刷的几道题以及用贪心的解题思路和实现代码(C++)。 122. Best Time to Buy and Sell Stock II 题目描述: Say you have an array prices for which the

k图着色 遗传算法的简单python伪代码-爱代码爱编程

文章目录 概述python伪代码 概述 该问题中所使用到的部分函数与知识与局部搜索、模拟退火中的相同,参照k图着色 局部搜索算法与模拟退火算法的python实现 遗传算法的整体思路比较简单,在解决图着色问题时这里解的编码形式就是所有节点的颜色序列,这时候依旧可以使用之前在局部搜索和模拟退火算法中所用的冲突计算函数get_conflict_c

LeetCode 300. 最长连续序列(map + 朴素遍历)+(set + 优化遍历)—— JavaScript-爱代码爱编程

相似题:LeetCode 300. 最长上升子序列 本题链接:https://leetcode-cn.com/problems/longest-consecutive-sequence/ 题描述: 解题思路(map + 遍历): 利用 map 表示当前元素是否存在数组中。 每次对当前元素进行向前和向后的遍历,统计该元素的连续序列的长度。 代

leetcode 滑动窗口小结 (一)-爱代码爱编程

目录 小结以及代码框架76. 最小覆盖子串滑动窗口代码以及注释567. 字符串的排列滑动窗口438. 找到字符串中所有字母异位词3. 无重复字符的最长子串化简框架reference 小结以及代码框架 滑动窗口技巧属于双指针技巧。 该算法的思路为维护一个窗口,不断滑动,然后更新答案。 大致框架如下:[参考labuladong的

原地堆排序(不占用额外空间)(C++实现)-爱代码爱编程

原地堆排序,不占用额外空间 // 原地堆排序,不占用额外空间 template<typename T> void shiftDown(T data[], int n, int i) { using uint = unsigned int; uint k = i; whil

LeetCode 100. 相同的树 做题小结-爱代码爱编程

题目: 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: tr

算法总结一: Linked List的高频操作-爱代码爱编程

学习目标: 算法总结一: Linked List 学习内容: 1、 Leetcode题库Linked List tag高频题 学习时间: 1、 周一至周天晚上 7 点—晚上9点 学习产出: 1、 技术笔记 1 篇 2、解题思路视频1个 ===================================== linked list的

左神算法基础班 第1章 第一周学习——认识复杂度和简单排序算法-爱代码爱编程

左神算法课基础班 1. 复杂度、对数器、二分法、位运算与异或运算 1.1 排序 1.1.1 Java自带的排序函数 Arrays.sort(arr); 1.1.2 冒泡排序   时间复杂度O(n*n),空间复杂度O(1)1.1.3 选择排序   时间复杂度O(n*n),空间复杂度O(1)保留数组中最小or最大的值的下标1.1.4 插入排序 

[MATLAB]Jacobi迭代-爱代码爱编程

[MATLAB代码]关于使用雅可比迭代法求线性方程组的数值解 jacobi.m %定义Jacobi迭代函数 function [x, n] = jacobi(A, b, x0, eps) %计算迭代矩阵 D = diag(diag(A)); L = -tril(A,-1); U = -triu(A,1); BJ = D\(L+U); f = D\b; %

LeetCode:实现摇摆序列-爱代码爱编程

A sequence of number is called a wiggle sequence if the differeces between successive numbers strictly alternative between positive and negative.The frist differece(if one exists

LeetCode 897. 递增顺序查找树 做题小结-爱代码爱编程

题目: 给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。 示例 : 输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8 /

利用vector存储元素(动态大小)实现最大堆(二叉堆)和堆排序(C++实现)-爱代码爱编程

二叉堆是一颗完全二叉树,二叉堆中某个节点的值总是不大于(小于)其父节点的值,称为最大堆(最小堆),该实现从vector下标为0开始存储元素 最大堆实现: // 利用vector存储实现堆,且从下标0位置开始存储元素 // parent(i) = (i-1)/2 // leftChild(i) = 2 * i + 1 /

利用数组存储元素(固定大小)实现最大堆(二叉堆)和堆排序(C++实现)-爱代码爱编程

二叉堆是一颗完全二叉树,二叉堆中某个节点的值总是不大于(小于)其父节点的值,称为最大堆(最小堆),该实现从数组下标为1开始存储元素,0位置预留不做处理,当然,完全可以从0开始存储元素,两者之间的差别就是求取某个节点的父节点、左右子节点以及最后一个非叶子节点的公式有所区别。 最大堆实现: // 利用数组存储实现堆,且从数组下标1位置开始存储元素,0

打印树的所有路径-爱代码爱编程

2020 年秋招百度二面被问到这个题,以前做过,所以顺利就写下来了。 //定义树的数据结构 struct TreeNode { int value; TreeNode* left; TreeNode* right; TreeNode(int val) : value(val), left(NULL), right(NULL

Java实现优化版【快速排序】+四度优化详解-爱代码爱编程

参考书目:《大话数据结构》 一:快速排序 1.基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 2.核心问题:枢轴的获取。选取一个关键字,通过调整使得它左边的值都比它小,右边的值都比它大,则这样的关键字称为枢轴值(pivotkey),

不用加减乘除做加法-爱代码爱编程

一、需求 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例: 输入: a = 1, b = 1 输出: 2 提示: a, b 均可能是负数或 0 结果不会溢出 32 位整数 二、位运算 2.1  思路分析 这一看就是位运算,但问题是选择什么样的位运算来解决加法的问题呢?这里的教程非常详

leetcode解题模板 —— 二分查找-爱代码爱编程

1.模板 vector<int>& nums int left = 0;//左边界 int right = nums.size()-1;//右边界 int mid = 0; while(left <= right) { mid = (le

noi 百练:简单的整数划分问题(递归)-爱代码爱编程

题目地址 描述 将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。 正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。 输入 标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 < N <= 50