【持续更新】leetcode算法-数组篇
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> hash = new HashMap<>();
for (int i=0; i<nums.length; i++){
if(hash.containsKey(target-nums[i])){
return new int[]{hash.get(target-nums[i]),i};
}else{
hash.put(nums[i],i);
}
}
return new int[]{0,0};
}
public int maxArea(int[] height) {
int max = 0;
int left = 0;
int right = height.length - 1;
int curArea = 0;
while (left < right) {
curArea = (right - left) * (height[right] < height[left] ? height[right--] : height[left++]);
if (curArea > max)
max = curArea;
}
return max;
}
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> list = new ArrayList<List<Integer>>();
Set<List<Integer>> set = new HashSet<>();
sort(nums);
int j = 0;
int k = 0;
for (int i = 0; i < nums.length - 2; i++) {
j = i + 1;
k = nums.length - 1;
while (j < k) {
int x = nums[i] + nums[j] + nums[k];
if (x == 0) {
List<Integer> innerList = new ArrayList<>();
innerList.add(nums[i]);
innerList.add(nums[j]);
innerList.add(nums[k]);
if (!set.contains(innerList)) {
set.add(innerList);
list.add(innerList);
}
j = j + 1;
k = k - 1;
} else if (x > 0) {
k = k - 1;
} else {
j = j + 1;
}
}
}
return list;
}
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int index = 0;
for (int i = 1; i < nums.length; i++) {
if (nums[index] != nums[i]) {
nums[++index] = nums[i];
}
}
return index + 1;
}
public int removeElement(int[] nums, int val) {
int index=0;
for(int i =0; i<nums.length; i++){
if(nums[i] != val) nums[index++]=nums[i];
}
return index;
}
public void nextPermutation(int[] nums) {
if(nums==null || nums.length<2) return;
int len = nums.length;
// 从右向左遍历,找到第一个前一个数小于后一个的数(升序对),记value=nums[i-1]
int i = len - 1;
while (i>0 && nums[i-1]>=nums[i]){
i--;
}
if(i==0){
reverse(nums, 0, len-1); // 反转数组
}else{
// 从右向左遍历,找到第一个大于value的数
int j = i-1;
int k = len -1;
while(nums[j]>=nums[k]){
k--;
}
int temp = nums[j];
nums[j] = nums[k];
nums[k] = temp;
reverse(nums, i, len-1);
}
}
public int search(int[] nums, int target) {
if(nums==null || nums.length==0) return -1;
// 找到最小值,即旋转中心
int n=nums.length;
int lo=0, hi=n-1;
while(lo<hi){
int mid=(hi-lo)/2+lo;
if(nums[mid]>nums[hi]) lo=mid+1;
else hi=mid;
}
int pivot=lo;
lo=0;
hi=n-1;
while(lo<=hi){
int mid=(hi-lo)/2+lo;
int realmid=(mid+pivot)%n;
if(nums[realmid]==target) return realmid;
else if(nums[realmid]>target) hi=mid-1;
else lo=mid+1;
}
return -1;
}
public int[] searchRange(int[] nums, int target) {
int[] ret = {-1,-1};
if(nums==null || nums.length==0) return nums;
int n=nums.length;
int lo=0, hi=n-1;
while(lo<hi){
int mid=(hi-lo)/2+lo;
if(nums[mid]<target) lo=mid+1;
else hi=mid;
}
if(nums[lo]!=target) return ret;
ret[0]=lo; lo=0;
hi=n-1;
while(lo<hi){
int mid=(hi-lo)/2+lo+1; // 保证偏向右边
if(nums[mid]>target) hi=mid-1;
else lo=mid;
}
ret[1]=lo;
return ret;
}
public List<List<Integer>> combinationSum(int[] candidates, int target) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
if(candidates == null || candidates.length == 0)
return res;
List<Integer> list = new ArrayList<>();
helper(candidates, target, 0, list, res);
return res;
}
public void helper(int[] candidates, int target, int start, List<Integer> temp, List<List<Integer>> res) {
if(target == 0){
res.add(new ArrayList<>(temp));
return;
}
if(target < 0) return;
for (int i = start; i < candidates.length; i++){
temp.add(candidates[i]);
helper(candidates, target-candidates[i], i, temp, res);
temp.remove(temp.size() - 1);
}
}
public List<List<Integer>> combinationSum2(int[] candidates, int target) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
if(candidates.length == 0 || candidates == null)
return res;
List<Integer> list = new ArrayList<>();
Arrays.sort(candidates);
helper(candidates, target, 0, list, res);
return res;
}
public void helper(int[] candidates, int target, int start, List<Integer> temp, List<List<Integer>> res) {
if(target == 0){
res.add(new ArrayList<>(temp));
return;
}
else if(target < 0)
return;
else {
for (int i = start; i < candidates.length; i++){
// 跳过重复元素
if(i>start && candidates[i]==candidates[i-1])
continue;
temp.add(candidates[i]);
helper(candidates, target-candidates[i], i+1, temp, res);
temp.remove(temp.size() - 1);
}
}
}
public int firstMissingPositive(int[] nums) {
if(nums == null || nums.length == 0) return 1;
int n = nums.length;
for (int i=0; i<n; i++){
while(nums[i]>0 && nums[i]<=n && nums[i]!=nums[nums[i]-1]) swap(nums, i, nums[i]-1);
}
for(int i=0; i<n; i++){
if(nums[i]!=i+1) return i+1;
}
return n+1;
}
public int trap(int[] height) {
if (height==null || height.length <= 2) return 0;
// 找最大高度
int maxIndex=0;
int max=0;
for(int i=0; i<height.length; i++){
if(height[i]>max){
max=height[i];
maxIndex=i;
}
}
int result=0;
int curMax=0;
for(int i=0; i<maxIndex; i++){
if(height[i]<curMax){
result += curMax-height[i];
}else{curMax=height[i];}
}
curMax=0;
for(int i=height.length-1; i>maxIndex; i--){
if(height[i]<curMax) result += curMax-height[i];
else curMax=height[i];
}
return result;
}
public int jump(int[] nums) {
if(nums==null || nums.length==0) return 0;
int dis=0;
int edge=0;
int steps=0;
for(int i=0; i<nums.length-1 && i<=dis; i++){
dis=Math.max(dis, i+nums[i]);
if(dis>=nums.length-1) return steps+1;
// 判断是否在一次跳转之内,只有等于最大边界时才会步数加1
if(edge == i){
edge = dis;
steps++;
}
}
return 0;
}
public void rotate(int[][] matrix) {
if(matrix==null || matrix.length==0) return;
int n = matrix.length;
int tmp;
for (int i = 0; i < n; ++i) {
for (int j = i; j < n; ++j) {
tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
for(int i=0; i<n; i++){
reverse(matrix[i]);
}
}
public int maxSubArray(int[] nums) {
if(nums==null || nums.length==0) return 0;
int max=nums[0];
int curSum=0;
for(int i=0; i<nums.length; i++){
curSum=Math.max(nums[i], curSum+nums[i]);
max=Math.max(max, curSum);
}
return max;
}
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> res = new ArrayList<>();
int m = matrix.length;
if (m < 1) return res;
int n = matrix[0].length;
int left = 0;
int right = n-1;
int up = 0;
int down = m-1;
while (left <= right && up <= down) {
// traverse right
for (int i = left; i <= right; i++) {
res.add(matrix[up][i]);
}
up++;
// traverse down
for (int i = up; i <= down; i++) {
res.add(matrix[i][right]);
}
right--;
// traverse left
if (up <= down) {
for (int i = right; i >= left; i--) {
res.add(matrix[down][i]);
}
}
down--;
// traverse up
if (left <= right) {
for (int i = down; i >= up; i--) {
res.add(matrix[i][left]);
}
}
left++;
} return res;
}
public boolean canJump(int[] nums) {
if(nums==null || nums.length==0) return false;
int dis=0;
for(int i=0; i<nums.length && i<=dis; i++){
dis = Math.max(dis, i+nums[i]);
if(dis >= nums.length-1) return true;
}
return false;
}
public List<Interval> merge(List<Interval> intervals) {
List<Interval> res = new ArrayList<>();
int n = intervals.size();
if (n < 1) return res;
// Sort by ascending starting point using an anonymous Comparator
Collections.sort(intervals, new Comparator<Interval>() {
@Override
public int compare(Interval i1, Interval i2) {
return Integer.compare(i1.start, i2.start);
}
});
int start = intervals.get(0).start;
int end = intervals.get(0).end;
for(int i=1; i<n; i++){
Interval curInteval = intervals.get(i);
if(curInteval.start <= end){
end = Math.max(end, curInteval.end);
}
else{
res.add(new Interval(start, end));
start = curInteval.start;
end = curInteval.end;
}
}
}
public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
int i=0;
while(i < intervals.size() && intervals.get(i).end < newInterval.start) i++; // 是否可以用二分找到这个i?
while(i<intervals.size() && intervals.get(i).start <= newInterval.end){
newInterval = new Interval(Math.min(intervals.get(i).start, newInterval.start), Math.max(intervals.get(i).end, newInterval.end));
intervals.remove(i);
}
intervals.add(i,newInterval);
return intervals;
}
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
if (n < 1)
return matrix;
int count = 1;
int left = 0;
int right = n-1;
int up = 0;
int down = n-1;
while (left <= right && up <= down) {
for (int i = left; i <= right; i++) {
matrix[up][i] = count;
count++;
}
up++;
for (int i = up; i <= down; i++) {
matrix[i][right] = count;
count++;
}
right--;
if (up <= down) {
for (int i = right; i >= left; i--) {
matrix[down][i] = count;
count++;
}
down--;
}
if (left <= right) {
for (int i = down; i >= up; i--) {
matrix[i][left] = count;
count++;
}
left++;
}
}
return matrix;
}
public int uniquePaths(int m, int n) {
int[] paths = new int[n+1];
Arrays.fill(paths, 1);
paths[0] = 0;
for(int i=0; i<m-1; i++){
for(int j=0; j<n; j++){
paths[j+1] = paths[j+1] + paths[j];
}
}
return paths[n];
}
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int n = obstacleGrid.length;
int m = obstacleGrid[0].length;
int[][] p = new int[n][m];
// 初始化第一行
for (int i = 0; i < m; i++){
p[0][i] = 1 - obstacleGrid[0][i];
if (p[0][i] == 0) break;
}
// 初始化第一列
for (int j = 0; j < n; j++){
p[j][0] = 1 - obstacleGrid[j][0];
if (p[j][0] == 0) break;
}
for ( int i = 1; i < n; i++){
for (int j = 1; j < m; j++) {
if(obstacleGrid[i][j] == 1)
p[i][j] = 0;
else p[i][j] = p[i-1][j] + p[i][j-1];
}
}
return p[n-1][m-1];
}
public int minPathSum(int[][] grid) {
if(grid==null || grid.length==0) return 0;
int m = grid.length;
int n = grid[0].length;
int[][] p = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (i == 0 && j == 0)
p[i][j] = grid[i][j];
else if (i == 0 && j > 0)
p[i][j] = p[i][j-1] + grid[i][j];
else if (i > 0 && j == 0)
p[i][j] = p[i-1][j] + grid[i][j];
else
p[i][j] = Math.min(p[i-1][j], p[i][j-1]) + grid[i][j];
}
}
return p[m-1][n-1];
}
public int[] plusOne(int[] digits) {
int carry = 1;
for(int i=digits.length-1; i>=0; i--){
carry += digits[i];
digits[i] = carry % 10;
carry /= 10;
}
if(carry==0) return digits;
else{
int[] newdigits = new int[digits.length+1];
newdigits[0]=1;
for(int i=1; i<newdigits.length; i++){
newdigits[i]=digits[i-1];
}
return newdigits;
}
}
public void setZeroes(int[][] matrix) {
boolean col0 = false;
for (int i = 0; i < matrix.length; i++) {
if(matrix[i][0]==0) col0=true;
for (int j = 1; j < matrix[0].length; j++) {
if (matrix[i][j] == 0) {
matrix[0][j] = 0;
matrix[i][0] = 0;
}
}
}
for (int i = matrix.length-1; i>=0; i--) {
for (int j = matrix[0].length-1; j>=1; j--) {
if (matrix[0][j] == 0 || matrix[i][0] == 0) {
matrix[i][j] = 0;
}
}
if(col0) matrix[i][0]=0;
}
}
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix==null || matrix[0].length==0) return false;
int m=matrix.length;
int n=matrix[0].length;
int lo=0;
int hi=m*n-1;
int mid;
while(lo<=hi){
mid=(hi-lo)/2+lo;
int row=mid/n;
int col=mid%n;
if(matrix[row][col]==target) return true;
else if(matrix[row][col] > target) hi = mid-1;
else lo = mid + 1;
}
return false;
}
public void sortColors(int[] nums) {
if(nums==null || nums.length==0) return;
int lo=0;
int hi=nums.length-1;
int i=0;
while(i<=hi){
if(nums[i]==0) swap(nums, i++, lo++);
else if(nums[i]==2) swap(nums, i, hi--);
else{i++;}
}
}
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
List<Integer> list = new ArrayList<>();
res.add(list);
for(int i=0; i<nums.length; i++){
int size = res.size();
for(int k=0; k<size; k++){
List<Integer> newList = new ArrayList<>(res.get(k));
newList.add(nums[i]);
res.add(newList);
}
}
return res;
}
public List<List<Integer>> subsets(int[] nums) {
Arrays.sort(nums);
List<List<Integer>> res = new ArrayList<>();
int totalNumber = 1 << nums.length;
for(int i=0; i<totalNumber; i++){
List<Integer> set = new ArrayList<>();
for(int j=0; j<nums.length; j++){
if(((i>>>j) & 0x1) == 1) set.add(nums[j]);
}
res.add(set);
}
return res;
}
public boolean exist(char[][] board, String word) {
for(int i = 0; i < board.length; i++)
for(int j = 0; j < board[0].length; j++){
if(exist(board, i, j, word, 0)) return true;
}
return false;
}
private boolean exist(char[][] board, int i, int j, String word, int ind){
if(ind == word.length()) return true;
if(i > board.length-1 || i <0 || j<0 || j >board[0].length-1 || board[i][j]!=word.charAt(ind)) return false;
char ch=board[i][j];
board[i][j]='*';
boolean result = exist(board, i-1, j, word, ind+1) ||
exist(board, i, j-1, word, ind+1) ||
exist(board, i, j+1, word, ind+1) ||
exist(board, i+1, j, word, ind+1);
board[i][j] = ch;
return result;
}
public int removeDuplicates(int[] nums) {
if(nums.length <= 2) return nums.length;
int index=0;
int p=1;
int counter=1;
while(p<nums.length){
if(nums[p] == nums[index]){
if(counter == 2){
p++;
}
else{
nums[++index] = nums[p];
p++;
counter = 2;
}
}
else {
nums[++index] = nums[p];
p++;
counter = 1;
}
}
return index+1;
}
public class Solution {
public boolean search(int[] nums, int target) {
if (nums.length < 1)
return false;
int start = 0;
int end = nums.length - 1;
while (start < end) {
int mid = start + (end-start)/2;
if (nums[mid] == target) return true; if (nums[start] < nums[mid]) {
if (target < nums[mid] && target >= nums[start])
end = mid - 1;
else start = mid + 1;
}
else if (nums[start] > nums[mid]){
if (target > nums[mid] && target <= nums[end])
start = mid + 1;
else end = mid - 1;
}
else {
start++;
}
}
return target == nums[start];
}
}
public int largestRectangleArea(int[] heights) {
int maxArea = 0;
Stack<Integer> stack = new Stack<>();
int i=0;
int height = 0;
int area = 0;
while(i <= heights.length){
if(i < heights.length) height = heights[i];
else height = 0;
if(stack.isEmpty() || height >= heights[stack.peek()]){
stack.push(i++);
}
else{
int index = stack.pop();
if(stack.isEmpty()) area = i * heights[index];
else {
area = (i-stack.peek()-1) * heights[index];
}
maxArea = Math.max(area, maxArea);
}
}
return maxArea;
}
public int maximalRectangle(char[][] matrix) {
int m = matrix.length;
if (m < 1){
return 0;
}
int n = matrix[0].length;
int[][] heights = new int[m][n+1];
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++) {
if(matrix[i][j] == '0'){
heights[i][j] = 0;
}else {
heights[i][j] = i == 0 ? 1 : heights[i - 1][j] + 1;
}
}
}
int maxArea=0;
for(int i = 0; i < m; i++){
int area = maxAreaInHist(heights[i]);
if(area > maxArea){
maxArea=area;
}
}
return maxArea;
}
public List<List<Integer>> subsetsWithDup(int[] nums) {
int length = nums.length;
Arrays.sort(nums); List<List<Integer>> res = new ArrayList<>();
List<Integer> emptyList = new ArrayList<>();
res.add(emptyList); for (int i = 0; i < length; i++) {
int count = 1;
while (i+1< length && nums[i] == nums[i+1]) {
count++;
i++;
}
int size = res.size();
for (int j = 0; j < size; j++) {
for (int k = 0; k < count; k++) {
List<Integer> newList = new ArrayList<>(res.get(j));
for (int p = 0; p <= k; p++)
newList.add(nums[i]);
res.add(newList);
}
}
}
return res;
}
构建过程,在中序遍历中找根节点的下标可以用hashmap加速
构建过程,在中序遍历中找根节点的下标可以用hashmap加速
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> res = new ArrayList<>(); if (numRows < 1) return res;
List<Integer> first = new ArrayList<>();
first.add(1);
res.add(first);
for (int i = 2; i <= numRows; i++)
{
List<Integer> list = new ArrayList<>();
List<Integer> preList = res.get(i-2);
for (int j = 0; j < i; j++)
{
if (j == 0)
list.add(1);
else if (j == i-1)
list.add(1);
else
{
list.add(preList.get(j-1)+preList.get(j));
}
}
res.add(list);
}
return res;
}
public List<Integer> getRow(int rowIndex) {
List<Integer> res = new ArrayList<>();
if (rowIndex < 0)
return res; for (int i = 0; i <= rowIndex; i++)
{
res.add(0, 1);
for (int j = 1; j < res.size()-1; j++)
{
res.set(j, res.get(j)+res.get(j+1));
}
}
return res;
}
public int minimumTotal(List<List<Integer>> triangle) {
if (triangle == null || triangle.size() == 0)
return 0; int [] sum = new int[triangle.size()];
for (int i = 0; i < triangle.size(); i++)
sum[i] = triangle.get(triangle.size()-1).get(i); for (int i = triangle.size()-2; i >= 0; i--)
{
for (int j = 0; j <= i; j++)
sum[j] = Math.min(sum[j], sum[j+1]) + triangle.get(i).get(j);
}
return sum[0]; }
public List<List<Integer>> combinationSum3(int k, int n)
{
List<List<Integer>> result = new ArrayList<>();
List<Integer> temp = new ArrayList<>();
boolean[] visited = new boolean[10];
helper(k, n, 1, 0, visited, temp, result);
return result;
}
public void helper(int k, int n, int start, int sum, boolean[] visited, List<Integer> temp, List<List<Integer>> res)
{
if (sum == n && temp.size() == k){
res.add(new ArrayList<>(temp));
return;
}
if (sum > n || temp.size() > k) return;
for (int i = start; i < 10; i++){
if (visited[i])
continue;
if (temp.size() > 0 && temp.get(temp.size()-1) > i)
continue;
temp.add(i);
visited[i] = true;
helper(k, n, start+1, sum+i, visited, temp, res);
temp.remove(temp.size()-1);
visited[i] = false;
}
}
public class Solution {
/**
定义一个当前数字i之前的数组合能到达的最小上界minUpper,如表示的数范围是1-m,则定义上界为minUpper=m+1
循环如下:
上界minUpper <= N:
如果当前数字i <= minUpper:
更新上界:minUpper = minUpper + i
如果当前数字i > minUpper:说明需要添加补丁数字minUpper,并且更新此时的上界minUpper=minUpper+minUpper;
*/
public int minPatches(int[] nums, int n) {
int minUpper = 1;
int index = 0;
int missingCounter = 0;
while (minUpper <= n) {
if(index < nums.length && nums[index] <= minUpper) {
minUpper += nums[index];
index++;
}
else {
//System.out.println(minUpper);
minUpper += minUpper;
missingCounter ++;
}
}
return missingCounter;
}
}
【持续更新】leetcode算法-数组篇的更多相关文章
- c++ LeetCode (初级字符串篇) 九道算法例题代码详解(二)
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11089327.html 已经刷了很多篇leetcode题了,不过最近在找c++的实习工作(大佬 ...
- 前端深入之js篇丨Array数组操作从入门到成神Up Up Up,持续更新中
写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组 ...
- 翻阅《数据结构与算法javascript描述》--数组篇
导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...
- LeetCode刷题总结-数组篇(上)
数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ...
- LeetCode刷题总结-数组篇(中)
本文接着上一篇文章<LeetCode刷题总结-数组篇(上)>,继续讲第二个常考问题:矩阵问题. 矩阵也可以称为二维数组.在LeetCode相关习题中,作者总结发现主要考点有:矩阵元素的遍历 ...
- LeetCode刷题总结-数组篇(下)
本期讲O(n)类型问题,共14题.3道简单题,9道中等题,2道困难题.数组篇共归纳总结了50题,本篇是数组篇的最后一篇.其他三个篇章可参考: LeetCode刷题总结-数组篇(上),子数组问题(共17 ...
- LeetCode题解分类汇总(包括剑指Offer和程序员面试金典,持续更新)
LeetCode题解汇总(持续更新,并将逐步迁移到本博客列表中) 剑指Offer 数据结构 链表 序号 题目 难度 06 从尾到头打印链表 简单 18 删除链表的节点 简单 22 链表中倒数第k个节点 ...
- LeetCode python实现题解(持续更新)
目录 LeetCode Python实现算法简介 0001 两数之和 0002 两数相加 0003 无重复字符的最长子串 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 Z字型变 ...
- LeetCode All in One题解汇总(持续更新中...)
突然很想刷刷题,LeetCode是一个不错的选择,忽略了输入输出,更好的突出了算法,省去了不少时间. dalao们发现了任何错误,或是代码无法通过,或是有更好的解法,或是有任何疑问和建议的话,可以在对 ...
随机推荐
- 复习下KMP&e-KMP
KMP算法的核心思想是next数组. 接下来,我来谈谈我对KMP数组的理解. KMP算法是用来匹配有多少相同字串的一种算法. 1.next数组记录前缀与后缀相等的位置,然后跳到这. 2.数组即记录后缀 ...
- android 自定义标题
public class MainActivity extends Activity { /** Called when the activity is first created. */ @Over ...
- 微信小程序のwxss
一.wxss简介 wxss是微信小程序的样式文件,同h5框架的css类似,它具有以下特性: 二.外联样式导入 我们可以通过@import引入外部文件的样式 小程序样式是从上到下,从左到右执行的,如果样 ...
- AD库转换为KiCAD库的方法
AD库转换为KiCAD库的方法 参照博主另外一篇文档: AD转换为KiCAD的方法,点击此处
- 单核cpu实现多任务原理
- vue项目从0开始记录
1.安装vue-cli 2.通过脚手架进行项目的创建 4.配置第三方UI库快速开发(如ivew,element ui) 5.配置axios 库 一.安装vue-cli npm install - ...
- php操作redis--字典(hash)篇
常用函数:hSet,hGet,hGetAll等. 应用场景:存储用户信息对象数据,包括id,姓名,年龄和生日,通过用户id来获取姓名,年龄等信息. 连接 $redis = new Redis(); $ ...
- 多媒体查询 @media 报错
You may not @extend an outer selector from within @media.You may only @extend selectors within the s ...
- Unity 调用jar闪退 解决方案
{ https://www.cnblogs.com/YZFHKMS-X/p/11864496.html }
- 【LeetCode 21】合并两个有序链表
题目链接 [题解] 就是归并排序的一趟合并操作. 新建个链表加在上面就好.(用原来的链表的头结点也没问题) 加个头结点会比较好操作一点. 返回的时候返回头结点的next域就行 [代码] /** * D ...