diff --git a/C++/chapLinearList.tex b/C++/chapLinearList.tex index bbc0ec1c..ea133f61 100644 --- a/C++/chapLinearList.tex +++ b/C++/chapLinearList.tex @@ -4,6 +4,115 @@ \chapter{线性表} \section{数组} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Contains Duplicate} +\label{sec:containd-duplicate} + + +\subsubsection{描述} +Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct. + +\subsubsection{分析} +无 + + +\subsubsection{代码1} +\begin{Code} +// LeetCode, Contains Duplicate +// 时间复杂度O(nlogn), 空间复杂度O(n) + +class Solution { + public: + bool containsDuplicate(vector& nums) { + set s; + for (int i = 0; i < nums.size(); ++i) { + if (!s.insert(nums[i]).second) + return true; + } + return false; + } +}; + +\end{Code} + + +\subsubsection{相关题目} + +\begindot +\item Contains Duplicate II,见 \S \ref{sec:contains-duplicate-ii} +\item Contains Duplicate III,见 \S \ref{sec:contains-duplicate-iii} +\myenddot + + +\subsection{Contains Duplicate II} +\label{sec:containd-duplicate-ii} + + +\subsubsection{描述} +Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i and j is at most k. + +\subsubsection{分析} +无 + + +\subsubsection{代码1} +\begin{Code} +// LeetCode, Contains Duplicate +// 时间复杂度O(nlogn), 空间复杂度O(n) + +class Solution { + public: + bool containsNearbyDuplicate(vector& nums, int k) { + set s; + for (int i = 0; i < nums.size(); ++i) { + if (i > k) { + s.erase(nums[i-k-1]); + + } + if (!s.insert(nums[i]).second) { + return true; + } + } + return false; + } +}; + +\end{Code} + + +\subsubsection{相关题目} + +\begindot +\item Contains Duplicate,见 \S \ref{sec:contains-duplicate} +\item Contains Duplicate III,见 \S \ref{sec:contains-duplicate-iii} +\myenddot + +\subsection{Contains Duplicate III} +\label{sec:containd-duplicate-iii} + + +\subsubsection{描述} +Given an array of integers, find out whether there are two distinct indices i and j in the array such that the difference between nums[i] and nums[j] is at most t and the difference between i and j is at most k. + +\subsubsection{分析} +无 + + +\subsubsection{代码1} +\begin{Code} +// LeetCode, Contains Duplicate +// 时间复杂度O(nlogn), 空间复杂度O(n) + + +\end{Code} + + +\subsubsection{相关题目} + +\begindot +\item Contains Duplicate,见 \S \ref{sec:contains-duplicate} +\item Contains Duplicate II,见 \S \ref{sec:contains-duplicate-ii} +\myenddot + \subsection{Remove Duplicates from Sorted Array} \label{sec:remove-duplicates-from-sorted-array} diff --git a/C++/leetcode-cpp.pdf b/C++/leetcode-cpp.pdf index 72d3da55..5cae0600 100644 Binary files a/C++/leetcode-cpp.pdf and b/C++/leetcode-cpp.pdf differ