数据结构与算法:05 Leetcode同步练习(一)
Leetcode同步练习(一)
题目01:两数之和
- 题号:1
- 难度:简单
- https://leetcode-cn.com/problems/two-sum/
给定一个整数数组 nums
和一个目标值 target
,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例1:
给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]
示例2:
给定 nums = [230, 863, 916, 585, 981, 404, 316, 785, 88, 12, 70, 435, 384, 778, 887, 755, 740, 337, 86, 92, 325, 422, 815, 650, 920, 125, 277, 336, 221, 847, 168, 23, 677, 61, 400, 136, 874, 363, 394, 199, 863, 997, 794, 587, 124, 321, 212, 957, 764, 173, 314, 422, 927, 783, 930, 282, 306, 506, 44, 926, 691, 568, 68, 730, 933, 737, 531, 180, 414, 751, 28, 546, 60, 371, 493, 370, 527, 387, 43, 541, 13, 457, 328, 227, 652, 365, 430, 803, 59, 858, 538, 427, 583, 368, 375, 173, 809, 896, 370, 789], target = 542因为 nums[28] + nums[45] = 221 + 321 = 542,所以返回 [28, 45]
参考代码:
思路:直接利用暴力匹配算法。
- 执行结果:通过
- 执行用时:432 ms, 在所有 C# 提交中击败了 65.82% 的用户
- 内存消耗:30.8 MB, 在所有 C# 提交中击败了 8.67% 的用户
public class Solution
{public int[] TwoSum(int[] nums, int target) {int[] result = new int[2];for (int i = 0; i < nums.Length - 1; i++){int find = target - nums[i];for (int j = i + 1; j < nums.Length; j++){if (find == nums[j]){result[0] = i;result[1] = j;return result;}}}return result;}
}
题目02:删除排序数组中的重复项
- 题号:26
- 难度:简单
- https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
给定一个 排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。
示例 1:
给定数组 nums = [1,1,2],
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
你不需要考虑数组中超出新长度后面的元素。
示例 2:
给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。
说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:
// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。
for (int i = 0; i < len; i++) {print(nums[i]);
}
参考代码:
思路:双索引法,就是一个快索引一个慢索引,j
快i
慢,当nums[j] == nums[i]
时,j++
就可以跳过重复项,不相等时,让i++
并让nums[i] = nums[j]
,把值复制过来继续执行到末尾即可,时间复杂度为O(n)
。
- 执行结果:通过
- 执行用时:300 ms, 在所有 C# 提交中击败了 64.43% 的用户
- 内存消耗:33.5 MB, 在所有 C# 提交中击败了 5.48% 的用户
public class Solution
{public int RemoveDuplicates(int[] nums) {if (nums.Length < 2)return nums.Length;int i = 0;for (int j = 1; j < nums.Length; j++){if (nums[j] != nums[i]){i++;nums[i] = nums[j];}}return i + 1; }
}
题目03:移除元素
- 题号:27
- 难度:简单
- https://leetcode-cn.com/problems/remove-element/
给定一个数组nums
和一个值val
,你需要原地移除所有数值等于val
的元素,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例 1:
给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。
示例 2:
给定 nums = [0,1,2,2,3,0,4,2], val = 2,函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。
示例 3:
输入:[] value = 0输出:0
示例 4:
输入:[1] value = 1输出:0
示例 5:
输入:[4,5] value = 5输出:1
说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:
// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val);// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。
for (int i = 0; i < len; i++) {print(nums[i]);
}
参考代码:
思路:双索引法,利用双索引i
和j
,i
为慢索引拖后,j
为快索引向前冲。如果nums[j]!=val
,将num[j]
的值赋给num[i]
,循环结束后,i
指针前面的元素,即为需要保留的元素,从而达到了移除元素的目的,时间复杂度为 O(n)
。
- 执行结果:通过
- 执行用时:272 ms, 在所有 C# 提交中击败了 94.41% 的用户
- 内存消耗:29.9 MB, 在所有 C# 提交中击败了 5.21% 的用户
public class Solution
{public int RemoveElement(int[] nums, int val) {int i = 0;for (int j = 0; j < nums.Length; j++){if (nums[j] != val){nums[i] = nums[j];i++;}}return i; }
}
题目04:最大子序和
- 题号:53
- 难度:简单
- https://leetcode-cn.com/problems/maximum-subarray/
给定一个整数数组nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例 1:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
示例 2:
输入: [-2,1],
输出: 1
进阶:
如果你已经实现复杂度为O(n)
的解法,尝试使用更为精妙的分治法求解。
参考代码:
思路:利用暴力算法。
- 状态:通过
- 执行用时: 596 ms, 在所有 C# 提交中击败了 14.18% 的用户
- 内存消耗: 24.5 MB, 在所有 C# 提交中击败了 5.88% 的用户
public class Solution {public int MaxSubArray(int[] nums) {int len = nums.Length;if (len == 0)return 0;if (len == 1)return nums[0];int max = int.MinValue;for (int i = 0; i < len; i++){int sum = nums[i];if (sum > max){max = sum;}for (int j = i + 1; j < len; j++){sum += nums[j];if (sum > max){max = sum;}}}return max; }
}
题目05:盛最多水的容器
- 题号:11
- 难度:中等
- https://leetcode-cn.com/problems/container-with-most-water/
给定n
个非负整数a1,a2,...,an
,每个数代表坐标中的一个点(i, ai)
。在坐标内画n
条垂直线,垂直线i
的两个端点分别为(i, ai)
和(i, 0)
。找出其中的两条线,使得它们与x
轴共同构成的容器可以容纳最多的水。
说明:你不能倾斜容器,且n
的值至少为 2。
图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
示例:
输入: [1,8,6,2,5,4,8,3,7]
输出: 49
参考代码:
思路:利用双索引的方法。
以0-7走到1-7这一步为例,解释为什么放弃0-6这一分支:
用h(i)表示第i条线段的高度,S(ij)表示第i条线段和第j条线段圈起来的面积。已知 h(0) < h(7),从而S(07) = h(0) * 7。有S(06) = min(h(0), h(6)) * 6。当h(0) <= h(6),有S(06) = h(0) * 6;
当h(0) > h(6),有S(06) = h(6) * 6,S(06) < h(0) * 6。由此可知,S(06)必然小于S(07)。
把每一棵子树按照同样的方法分析,很容易可以知道,双索引法走的路径包含了最大面积。
- 状态:通过
- 50 / 50 个通过测试用例
- 执行用时: 144 ms, 在所有 C# 提交中击败了 99.64% 的用户
- 内存消耗: 26.6 MB, 在所有 C# 提交中击败了 5.45% 的用户
public class Solution
{public int MaxArea(int[] height) {int i = 0, j = height.Length - 1;int max = int.MinValue;while (i < j){int temp = (j - i) * Math.Min(height[i], height[j]);if (temp > max){max = temp;}if (height[i] < height[j]){i++;}else{j--;}}return max; }
}
题目06:搜索旋转排序数组
- 题号:33
- 难度:中等
- https://leetcode-cn.com/problems/search-in-rotated-sorted-array/
假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。
你可以假设数组中不存在重复的元素。
你的算法时间复杂度必须是O(log n)
级别。
示例 1:
输入: nums = [4,5,6,7,0,1,2], target = 0
输出: 4
示例 2:
输入: nums = [4,5,6,7,0,1,2], target = 3
输出: -1
示例 3:
输入: nums = [5,1,3], target = 5
输出: 0
示例 4:
输入: nums = [4,5,6,7,8,1,2,3], target = 8
输出: 4
示例 5:
输入: nums = [3,1], target = 1
输出: 1
参考代码:
思路:利用二分法。
- 状态:通过
- 执行用时: 128 ms, 在所有 C# 提交中击败了 97.17% 的用户
- 内存消耗: 23.8 MB, 在所有 C# 提交中击败了 12.00% 的用户
public class Solution
{public int Search(int[] nums, int target) {int i = 0, j = nums.Length - 1;while (i <= j){int mid = (i + j) / 2;if (nums[mid] == target)return mid;if (nums[mid] >= nums[i]){//左半部分有序if (target > nums[mid]){i = mid + 1;}else{if (target == nums[i])return i;if (target > nums[i])j = mid - 1;elsei = mid + 1;}}else{if (target < nums[mid]){j = mid - 1;}else{if (target == nums[j])return j;if (target < nums[j])i = mid + 1;elsej = mid - 1;}}}return -1; }
}
题目07:数组中的第K个最大元素
- 题号:215
- 难度:中等
- https://leetcode-cn.com/problems/kth-largest-element-in-an-array/
在未排序的数组中找到第 k
个最大的元素。请注意,你需要找的是数组排序后的第 k
个最大的元素,而不是第 k
个不同的元素。
示例 1:
输入: [3,2,1,5,6,4] 和 k = 2
输出: 5
示例 2:
输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4
说明:
你可以假设 k
总是有效的,且 1 ≤ k ≤ 数组的长度
。
参考代码:
思路:利用排序的方法。
- 状态:通过
- 执行用时: 152 ms, 在所有 C# 提交中击败了 76.47% 的用户
- 内存消耗: 24.6 MB, 在所有 C# 提交中击败了 5.55% 的用户
public class Solution
{public int FindKthLargest(int[] nums, int k){nums = nums.OrderBy(a => a).ToArray();return nums[nums.Length - k];}
}
题目08:除自身以外数组的乘积
- 题号:238
- 难度:中等
- https://leetcode-cn.com/problems/product-of-array-except-self/
给定长度为n
的整数数组nums
,其中n > 1
,返回输出数组output
,其中output[i]
等于 nums
中除nums[i]
之外其余各元素的乘积。
示例:
输入: [1,2,3,4]
输出: [24,12,8,6]
说明: 请不要使用除法,且在O(n)
时间复杂度内完成此题。
进阶:
你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)
参考代码:
思路:乘积 = 当前数左边的乘积 * 当前数右边的乘积
[1, 2, 3, 4]左边的乘积 [1, 1, 2, 6]右边的乘积 [24,12,4, 1]
结果 = 左*右 [24,12,8, 6]
- 状态:通过
- 执行用时: 304 ms, 在所有 C# 提交中击败了 100.00% 的用户
- 内存消耗: 34.6 MB, 在所有 C# 提交中击败了 100.00% 的用户
public class Solution
{public int[] ProductExceptSelf(int[] nums){int len = nums.Length;int[] output1 = new int[len];//正向乘积int[] output2 = new int[len];//反向乘积output1[0] = 1;output2[len - 1] = 1;for (int i = 1; i < len; i++){output1[i] = output1[i - 1]*nums[i - 1];output2[len - i - 1] = output2[len - i]*nums[len - i];}for (int i = 0; i < len; i++){output1[i] *= output2[i];}return output1;}
}
题目09:寻找两个有序数组的中位数
- 题号:4
- 难度:困难
- https://leetcode-cn.com/problems/median-of-two-sorted-arrays/
给定两个大小为m
和n
的有序数组nums1
和nums2
。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))
。
你可以假设nums1
和nums2
不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5
参考代码:
思路:利用二分策略。
中位数:用来将一个集合划分为两个长度相等的子集,其中一个子集中的元素总是大于另一个子集中的元素。
由于题目要求时间复杂度为O(log(m + n))
,所以不能从两个有序数组的首尾挨个遍历来找到中位数(复杂度 O(m + n)
);而是要通过二分策略,通过每次比较,能够直接按比例的刷掉一组数字,最后找到中位数(复杂度O(log(m + n))
)。
nums1: [a1,a2,a3,...am]
nums2: [b1,b2,b3,...bn][nums1[:i],nums2[:j] | nums1[i:], nums2[j:]]nums1 取 i 个数的左半边
nums2 取 j = (m+n+1)/2 - i 的左半边
只要保证左右两边 个数 相同,中位数就在 |
这个边界旁边产生,从而可以利用二分法找到合适的i
。
- 状态:通过
- 执行用时: 160 ms, 在所有 C# 提交中击败了 99.18% 的用户
- 内存消耗: 26.8 MB, 在所有 C# 提交中击败了 5.05% 的用户
public class Solution {public double FindMedianSortedArrays(int[] nums1, int[] nums2) {int m = nums1.Length;int n = nums2.Length;if (m > n)return FindMedianSortedArrays(nums2, nums1);int k = (m + n + 1)/2;int left = 0;int right = m;while (left < right){int i = (left + right)/2;int j = k - i;if (nums1[i] < nums2[j - 1])left = i + 1;elseright = i;}int m1 = left;int m2 = k - left;int c1 = Math.Max(m1 == 0 ? int.MinValue : nums1[m1 - 1],m2 == 0 ? int.MinValue : nums2[m2 - 1]);if ((m + n)%2 == 1)return c1;int c2 = Math.Min(m1 == m ? int.MaxValue : nums1[m1],m2 == n ? int.MaxValue : nums2[m2]);return (c1 + c2)*0.5; }
}
题目10:缺失的第一个正数
- 题号:41
- 难度:困难
- https://leetcode-cn.com/problems/first-missing-positive/
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。
示例1:
输入: [1,2,0]
输出: 3
示例2:
输入: [3,4,-1,1]
输出: 2
示例3:
输入: [7,8,9,11,12]
输出: 1
示例4:
输入: [1,1]
输出: 2
实例5:
输入: []
输出: 1
说明:
你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。
参考代码:
思路:把数组进行一次“排序”,“排序”的规则是:如果这个数字i
落在“区间范围里”,i
就应该放在索引为i - 1
的位置上。
- 执行结果:通过
- 执行用时:100 ms, 在所有 C# 提交中击败了 93.75% 的用户
- 内存消耗:24.2 MB, 在所有 C# 提交中击败了 97.44% 的用户
public class Solution {public int FirstMissingPositive(int[] nums) {int len = nums.Length;for (int i = 0; i < len; i++){while (nums[i] != i + 1 && nums[i] <= len && nums[i] > 0 && nums[i] != nums[nums[i] - 1]){int temp = nums[i];nums[i] = nums[temp - 1];nums[temp - 1] = temp;}}for (int i = 0; i < len; i++){if (nums[i] != i + 1){return i + 1;}}return len + 1; //nums.Length = 0 }
}
后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:
相关文章:

用Asp.net实现简单的文字水印
经常看见MOP上有人贴那种动态的图片,就是把一个字符串作为参数传给一个动态网页,就会生成一个带有这个字符串的图片,这个叫做文字水印。像什么原来的熊猫系列,还有后来的大树和金条,都挺有意思。这东西看着挺好玩的&am…

yum国内镜像
Centos-7修改yum源为国内的yum源 国外地址yum源下载慢,下到一半就断了,就这个原因就修改它为国内yum源地址 国内也就是ali 与 网易 以centos7为例 ,以 修改为阿里的yum源 先确定有wget 备份本地yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_…

HTML的标签分为哪几类?各标签语法格式是怎样的?
HTML的标签分为哪几类?各标签语法格式是怎样的?相信大家在学习HTML课程的时候,有讲到这方面的知识,根据标签的组成特点,通常将HTML标签分为两大类,分别是“双标签”、“单标签”,对它们的具体介绍如下。 1.双标签 双…

数据结构与算法:06 线性表
06 线性表 知识结构: 1. 线性表的定义与操作 1.1 线性表的定义 线性表(Linear List)是由n(n≥0)n (n≥0)n(n≥0)个相同类型的数据元素a0,a1,⋯,an−1a_0,a_1,⋯,a_{n-1}a0,a1,⋯,an−1组成的序列。即表中除首尾元素外,其…

MySQL提权简单方法
前不久网上公开了一个MySQL Func的漏洞,讲的是使用MySQL创建一个自定义的函数,然后通过这个函数来攻击服务器。最早看到相关的报道是在o-otik上,但是公布的是针对 Unix系统的Exploit,并且成功率也不是很高.而近期,国内有高手放出针对Win系统的相关文章,于是我马上找来与朋友一同…

转载LINQ优点 自己学习用的
这几天在读一本LINQ方面的书《Essential LINQ》,在这里和大家分享下。 由于对LINQ的深入总结需要大量的篇幅,因此在这里分成几个部分来讲。 (*我看《Essential LINQ》是英文版的,有些名词不能翻译成正统的中文解释请给予谅解) LIN…

什么是Python?好学吗?
互联网IT行业是很多人都比较关注的行业,大部分都想学习IT技术进入到这个行业,Python编程语言在近几年是多数人的选择,那么什么是Python?好学吗?具体来看看下面的详细介绍吧。 一、什么是python 网络上对python的解释是一门解释型、面向对象…

数据结构与算法:07 Leetcode同步练习(二)
目录 题目01:回文数题目02:x 的平方根题目03:爬楼梯题目04:买卖股票的最佳时机题目05:买卖股票的最佳时机 II题目06:跳跃游戏题目07:三数之和题目08:最接近的三数之和题目09&#x…

(五)Docker镜像和容器
之所以在之前没有讲什么是镜像和容器是因为如果你没有一个最初的认识,那么你就很难理解镜像和容器以及它们的区别。我相信在前面一章中的讲述中,你应该稍有体会容器是基于镜像构建的,同时构建了容器之后如果不删除就会一直存在,而…

翻译-高质量JavaScript代码书写基本要点(转载)
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p1173 原文作者:Stoyan Stefanov原文链接:The Essentials of Writing High Quality JavaScript 翻译编辑:张鑫旭//zxx: 俗不可耐的…

学习ui设计的流程是什么
UI设计在如今的市场行情中是很多企业都必不可少的一个技术岗位,UI设计是比较注重自身产品的用户体验的,想要学习UI设计,一定要做足功课,下面小编就为大家详细的介绍一下学习ui设计的流程是什么? 学习ui设计的流程是什么?总体进程…
数据结构与算法:08 Leetcode同步练习(三)
目录 题目01:合并两个有序链表题目02:删除排序链表中的重复元素题目03:环形链表题目04:反转链表题目05:删除链表中的节点题目06:两数相加题目07:删除链表的倒数第N个节点题目08:两两…

Linux之进程管理
程序是保存在外部存储设备(如硬盘)中的可执行机器代码和数据的集合。而进程是在CPU及内存中处于动态执行状态的计算机程序。每个程序启动后会产生一个或多个进程,如httpd程序,当有大量用户访问Web页面时,httpd程序会产…

win8 metro 拖拽重排grid
0.1 http://1.metrowin8.sinaapp.com/Code/index.html 拖拽重排实现思路 : 1.初始化拖拽对象时,上传拖拽对象中心点信息(包括id,className) 2.鼠标按下时,制造一个假的拖拽对象 3.鼠标放开时,计算鼠标与拖拽对象中心点的距离&…

什么是AngularJS?它有哪些特性?
AngulaJS是款非常优秀的JasSetpsn结构化框架,可以用来构建单页面应用程序,2009年,AngularJS由Misko Hevery等人创建,后来被Google收购,该技术已经被用于Coogle旗下的多款产品开发当中。开发人员不仅可以使用和扩展HTML语言的特性。而且可以更…

ELK安装文档及相关优化
前言:随着硬件成本的不断低廉,我们可以存储更多数据内容,也会对各数据加以利用,其中一项很重要的数据内容便是日志文件,无论是访问日志还是系统日志或是应用日志,都显得十分重要,而怎么加以利用…

数据结构与算法:09 栈与递归
09 栈与递归 知识结构: 栈是我们经常使用的一种数据结构,比如,手枪发射子弹的顺序与子弹压入弹夹的顺序是相反,即后压入弹夹的子弹先发射出来。又比如,我们使用的Word、Excel、Photoshop等软件系统中的撤销操作&#…

Javascript匿名函数
定义 匿名函数的定义非常简单:就是没有名字的函数。但是其用途非常的大 典型的函数定义方式 在看匿名函数之前我们先看下在Javascript中定义一个函数比较典型的几种方式 函数声明 function functionName(args) { //函数体 } 函数表达式 var functionName functi…

零基础学Java大数据难不难
java大数据如今在企业中用到的次数是非常多的,很多人都比较看好java技术,那么零基础学Java大数据难不难?想要学习java技术说难不难,说简单也不是很简单,来看看下面的详细介绍就知道了。 零基础学Java大数据难不难?因人而异&…

技术图文:01 面向对象设计原则
01 面向对象设计原则 知识结构: 一碟开胃的小菜 小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位。当投递了无数简历后,终于收到了一个单位的面试…

关于GridView手动绑定的一段代码,一切尽在不言中
为GridView绑定主键的方法,在前台的DataGrid标签中加 DataKeyNames"ID" 后台获取ID: int idint.parse(this.GridView.DataKeys[e.RowIndex].Value.Tostring()); 如果DataKeyNames绑定了多个列取法:int idint.parse(this.G…

linux 服务器FTP服务安装教程
1.更新yum源 首先需要更新系统的yum源,便捷工具下载地址:http://help.aliyun.com/manual?spm0.0.0.0.zJ3dBU&helpId1692 2.安装vsftp 使用yum命令安装vsftp #yum install vsftpd -y 3.添加ftp帐号和目录 先检查一下nologin的位置,通常在…

CSS3颜色不透明度如何设置
web前端技术包含HTML和CSS样式,两者是相辅相成的,学习CSS样式不必可少,那么在学习CSS样式中,CSS3颜色不透明度如何设置?在CSS3之前,我们设置颜色的方式包含十六进制颜色(如#F00)、rgb模式颜色、或指定颜色的英文名称(…

技术图文:02 创建型设计模式(上)
创建型设计模式(上) 知识结构: 图1 知识结构 简单工厂模式 Sunny 软件公司欲基于 C# 语言开发一套图表库,该图表库可以为应用系统提供各种不同外观的图表,如: 柱状图(histogram)饼…

转:初探 jQuery 的 Sizzle 选择器
这是一篇关于介绍jQuery Sizzle选择器的文章,由我和obility共同完成。在文中,我们试图用自己的语言配以适量的代码向读者展现出Sizzle在处理选择符时的流程原理,以及末了以少许文字给你展示出如何借用Sizzle之手实现自定义选择器(…

安装hadoop图文
1.下载hadoop-2.5.1,存放根目录 2.通过tar -zxvf 包名 来进行解压 3.通过mv命令将解压后的hadoop包移动到/home下 4.修改hadoop-en.sh配置文件,添加jdk的安装目录,操作如下图所示 5.修改core-site.xml配置文件,添加namenode的配置信息 6.修改hdfs-site.xml配置文件,添加seconda…

Java中父类方法重写有哪些需要注意的?
在继承关系中,子类会自动继承父类中公共的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。需要注意的是,子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。 在上一节…

技术图文:02 创建型设计模式(下)
创建型设计模式(下) 知识结构: 图1 知识结构 单例模式 – 确保对象的唯一性 Sunny 软件公司承接了一个服务器负载均衡软件的开发工作,该软件运行在一台负载均衡服务器上,可以将并发访问和数据流量分发到服务器集群中…

[转载]C# 二进制与十进制,十进制与十六进制相互转换
原文地址:C# 二进制与十进制,十进制与十六进制相互转换作者:tonytonglx十进制转二进制:用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302302/2 151 余0151/2 75 余175/2 37 余137/2 18 余118/2 9 余09/2 4 余14/2 …

感知哈希算法——找出相似的图片
参考Neal Krawetz博士的这篇文章, 实现这种功能的关键技术叫做"感知哈希算法"(Perceptual Hash Algorithm), 意思是为图片生成一个指纹(字符串格式), 两张图片的指纹越相似, 说明两张图片就越相似. 但关键是如何根据图片计算出"指纹"呢? 下面用最简单的步…