当前位置: 首页 > news >正文

Java【数据结构入门OJ题33道】——力扣刷题记录1

文章目录

  • 第一天
    • 存在重复元素
    • 最大子数组和
  • 第二天
    • 两数之和
    • 合并两个有序数组
  • 第三天
    • 两个数组的交集
    • 买卖股票最佳时机
  • 第四天
    • 重塑矩阵
    • 杨辉三角
  • 第五天
    • 有效的数独
    • 矩阵置零
  • 第六天
    • 字符串中第一个唯一字符
    • 救赎金
  • 第七天
    • 判断链表是否有环
    • 合并两个有序链表
    • 移除链表元素
  • 第八天
    • 反转链表
    • 删除重复元素
  • 第九天
    • 有效的括号匹配
    • 用栈实现队列
  • 第十天
    • 二叉树前序遍历(非递归)
    • 二叉树中序遍历(非递归)
    • 二叉树后序遍历(非递归)
  • 第十一天
    • 二叉树中序遍历
    • 二叉树最大深度
    • 对称二叉树
  • 第十二天
    • 反转二叉树
    • 路经总和
  • 第十三天
    • 二叉搜索树中的搜索
    • 二叉搜索树中的插入
  • 第十四天
    • 判断是否为二叉搜索树
    • 两数之和 IV
    • 最近公共祖先

记录力扣数据结构入门OJ题


提示:本人是正在努力进步的小菜鸟,不喜勿喷~,如有大佬发现某题有更妙的解法和思路欢迎提出讨论~

第一天

存在重复元素

OJ链接

利用 HashSet 可以去重的功能, new 一个hashSet , 遍历数组, 如果 hashSet 中不存在该数据, add; 如果存在, 返回 true;

class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> hashSet = new HashSet<>();for(int x : nums) {if(!hashSet.contains(x)) {hashSet.add(x);}else {return true;}}return false;}
}

时间复杂度: O(N) 需遍历数组长度
空间复杂度: O(N) 需创建数组长度为N的哈希表


最大子数组和

动态规划问题

class Solution {public int maxSubArray(int[] nums) {int ret = nums[0];// 取列表中最大值for(int i = 1; i < nums.length; i++) {// 前一个数据 > 0 时, 把前一个数据加到当前数据上, 返回列表中最大值if(nums[i - 1] > 0) {nums[i] += nums[i - 1];}ret = Math.max(ret, nums[i]);}return ret;}
}

时间复杂度: O(N) // 遍历数组
空间复杂度: O(1)



第二天

两数之和

OJ链接

哈希表

class Solution {public int[] twoSum(int[] nums, int target) {int[] ret = new int[2];Map<Integer, Integer> hashMap = new HashMap<>();for(int i = 0; i < nums.length; i++){hashMap.put(i,nums[i]); // (下标, 值)}Set<Map.Entry<Integer,Integer>> set = hashMap.entrySet();// 转化成Entryfor(Map.Entry<Integer,Integer> entry1 : set) {for(Map.Entry<Integer,Integer> entry2 : set) {// 遍历set, 保证两个entry的key值不同时,且value值相加得targetif(entry1.getValue() + entry2.getValue() == target && (entry1.getKey() != entry2.getKey())) {         ret[0] = entry1.getKey();ret[1] = entry2.getKey();return ret;}}}return ret;}
}

这个方法时间效率太低了, 时间复杂度是O(N^2) 空间复杂度是O(N), 优化后如下

class Solution {public static int[] twoSum(int[] nums, int target) {int[] ret = new int[2];Map<Integer, Integer> treeMap = new TreeMap<>();for(int i = 0; i < nums.length; i++){// target和当前数据的差int difference = target - nums[i];// 放入当前数据前查看map中是否存在插值, 存在就返回if (treeMap.containsKey(difference)) {// 找到了另一个数ret[0] = treeMap.get(difference);ret[1] = i;return ret;}// 把数据和下标放入map中treeMap.put(nums[i],i); // (值, 下标)}return ret;}
}

时间复杂度: O(N)
空间复杂度: O(N)


合并两个有序数组

OJ链接

逆向双指针
从后往前放入nums1中(nums1后半部分是空的, 所以从后放不会覆盖前面的数据)
谁大谁放
结束条件为 j 把nums2遍历完
由于 i j 遍历的过程中一直在比较, 所以能够保证nums1中越靠后的数据越大

class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int i = m-1;// nums1的指针int j = n-1;// nums2的指针int k = m+n-1;while(j >= 0){// 从后往前放if(i >= 0 && nums1[i] > nums2[j] ) {nums1[k] = nums1[i];i--;k--;}else{nums1[k] = nums2[j];j--;k--;}}}
}

时间复杂度:O(M + N) // 双指针遍历数组
空间复杂度:O(1)


第三天

两个数组的交集

OJ链接

哈希表

public class Intersect {public int[] intersect(int[] nums1, int[] nums2) {int[] ret = null;Map<Integer, Integer> hashMap = new HashMap<>();ArrayList<Integer> list = new ArrayList<>();for(int i = 0; i < nums1.length ; i++) {if(hashMap.containsKey(nums1[i]) ) {// 如果已经存在这个值, 让它的value值+1hashMap.put(nums1[i], hashMap.get(nums1[i]) + 1);}else {// 如果不存在, 放入这个值hashMap.put(nums1[i], 1);}}for(int i = 0; i < nums2.length; i++) {if(hashMap.containsKey(nums2[i]) && hashMap.get(nums2[i]) > 0) {// 如果nums1中存在当前值(value值 > 0视为存在)hashMap.put(nums2[i], hashMap.remove(nums2[i]) - 1);list.add(nums2[i]);}}// 转化成数组ret = new int[list.size()];for(int i = 0; i < ret.length; i++) {ret[i] = list.get(i);}return ret;}
}

买卖股票最佳时机

OJ链接

动态规划

public class MaxProfit {public int maxProfit(int[] prices) {int minPrices = Integer.MAX_VALUE;int difference = 0;for(int i = 0; i < prices.length; i++) {if(prices[i] < minPrices) {minPrices = prices[i];}else {// 找到差值最大的情况difference = Math.max(prices[i] - minPrices, difference);}}return difference;}
}


第四天

重塑矩阵

OJ链接

核心思想: 遍历, 把数据的一维数组下标, 映射到二维数组中

题解如图:
在这里插入图片描述

class Solution {public int[][] matrixReshape(int[][] mat, int r, int c) {int[][] ret = new int[r][c];int row = mat.length; // 行数int column = mat[0].length; // 列数if(mat == null || row * column != r * c) {return mat;}// 二维数组用一维表示for(int i = 0; i < row * column; i++) {ret[i/c][i%c] = mat[i/column][i%column];}return ret;}
}

时间复杂度 : O(M*N)
空间复杂度 : O(1)


杨辉三角

OJ链接

class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> ret = new ArrayList<>();List<Integer> firstColumn = new ArrayList<>();// 第一行firstColumn.add(1);ret.add(firstColumn);int i = 1;while(i < numRows) {// 第一个1List<Integer> prev = ret.get(i - 1);List<Integer> column = new ArrayList<>();column.add(1);// 中间数int j = 1;while(j < i) {column.add(prev.get(j -1) + prev.get(j));j++;}// 最后一个1column.add(1);ret.add(column);i++;}return ret;}
}


第五天

有效的数独

OJ链接

	public boolean isValidSudoku(char[][] board) {int[][] row = new int[9][9];int[][] column = new int[9][9];int[][] Box = new int[9][9];for(int i = 0; i < 9; i++) {for(int j = 0; j < 9; j++) {if(board[i][j] != '.') {int val = board[i][j] - '0';if(row[i][val - 1] != 0 || column[val - 1][j] != 0) {// 说明这一行或这一列已经有过此数据,返回falsereturn false;}if(Box[(i/3) * 3 + j/3][val - 1] != 0) {// 说明九宫格内已经有过此数据, 返回falsereturn false;}row[i][val - 1] = val;column[val - 1][j] = val;Box[(i/3) * 3 + j/3][val - 1] = val;}}}return true;}

矩阵置零

OJ链接

    public void setZeroes(int[][] matrix) {int m = matrix.length;int n = matrix[0].length;Queue<Integer> queue = new LinkedList<>();for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {if(matrix[i][j] == 0) {queue.offer(i * n + j);}}}while(!queue.isEmpty()) {int num = queue.poll();for(int i = 0; i < n; i++) {matrix[num / n][i] = 0;}for(int j = 0; j < m; j++) {matrix[j][num % n] = 0;}}}


第六天

字符串中第一个唯一字符

OJ链接

	public int firstUniqChar1(String s) {int len = s.length();Map<Character, Integer> hashMap = new HashMap<>();for(int i = 0; i < len; i++) {char ch = s.charAt(i);if(hashMap.containsKey(ch)) {int num =  hashMap.remove(ch);hashMap.put(ch, num + 1);}else {hashMap.put(ch,1);}}for(int j = 0; j < len; j++) {if(hashMap.get(s.charAt(j)) == 1) {return j;}}return -1;}
	public int firstUniqChar2(String s) {int len = s.length();for(int i = 0; i < len; i++) {if(s.indexOf(s.charAt(i)) == s.lastIndexOf(s.charAt(i))) {return i;}}return -1;}

救赎金

OJ链接

	public boolean canConstruct(String ransomNote, String magazine) {Map<Character, Integer> hashMap = new HashMap<>();for(int i = 0; i < ransomNote.length(); i++) {char ch = ransomNote.charAt(i);hashMap.put(ch, hashMap.getOrDefault(ch, 0) + 1);}for(int j = 0; j < magazine.length(); j++) {char ch = magazine.charAt(j);if( hashMap.containsKey(ch) &&  hashMap.get(ch) > 0) {hashMap.put(ch, hashMap.get(ch) - 1);if(hashMap.get(ch) ==0 ) {hashMap.remove(ch);}if(hashMap.size() == 0) {return true;}}}return false;}

代码优化1:

        for (int i = 0; i < t.length(); i++) {char ch = t.charAt(i);table.put(ch, table.getOrDefault(ch, 0) - 1);if (table.get(ch) < 0) {return false;}}

代码优化2:

    public boolean isAnagram3(String s, String t) {if (s.length() != t.length()) {return false;}char[] str1 = s.toCharArray();char[] str2 = t.toCharArray();Arrays.sort(str1);Arrays.sort(str2);return Arrays.equals(str1, str2);}


第七天

判断链表是否有环

哈希或者双指针

OJ链接

    public boolean hasCycle(ListNode head) {ListNode fast = head;ListNode slow = head;while (fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;if (fast == slow) {return true;}}return false;}

合并两个有序链表

OJ链接

    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode pHead = new ListNode(-1);ListNode prev = pHead;while(list1 != null && list2 != null) {if(list1.val <= list2.val) {prev.next = list1;list1 = list1.next;prev = prev.next;}else {prev.next = list2;list2 = list2.next;prev = prev.next;}}prev.next = list1 == null ? list2 : list1;return pHead.next;}

移除链表元素

OJ链接

    public ListNode removeElements(ListNode head, int val) {if(head == null) {return null;}ListNode newHead = head;ListNode cur = head;ListNode curPrev = null;while(cur != null) {if(cur.val == val) {if(cur == newHead) {newHead = newHead.next;}else {curPrev.next = cur.next;cur = curPrev.next;continue;}}curPrev = cur;cur = cur.next;}return newHead;}


第八天

反转链表

遍历一次链表, 依次头插即可

    public ListNode reverseList(ListNode head) {if(head == null) {return null;}ListNode cur = head;ListNode newHead = cur;while(cur.next != null)  {ListNode curNext = cur.next;cur.next = curNext.next;curNext.next = newHead;newHead = curNext;}return newHead;}

删除重复元素

注意: 重复数据连续出现的次数可能不止有两次, 所以删除重复数据操作需要while循环

    public ListNode deleteDuplicates(ListNode head) {if(head == null) {return null;}ListNode cur = head;while(cur != null && cur.next != null ) {ListNode curNext = cur.next;while (curNext != null && cur.val == curNext.val){cur.next = curNext.next;curNext = cur.next;}cur = cur.next;}return head;}


第九天

有效的括号匹配

OJ链接

 // 有效的括号匹配public boolean isValid(String s) {Deque<Character> stack = new ArrayDeque<>();// 遍历字符串for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);// 如果是左括号就压栈if (ch == '(' || ch == '[' || ch == '{') {stack.push(ch);}//如果是右括号if (ch == ')' || ch == ']' || ch == '}') {// 如果栈为空,说明没有对应的左括号,直接返回falseif (stack.isEmpty()) {return false;}// 栈不为空的情况char ch2 = stack.peek();if ((ch == ')' && ch2 == '(') || (ch == ']' && ch2 == '[')|| (ch == '}' && ch2 == '{')) {stack.pop();}else {// 不匹配,返回falsereturn false;}}}return stack.isEmpty();}

用栈实现队列

OJ链接

    // 用栈实现队列Deque<Integer> stack1 ;Deque<Integer> stack2;public MyQueue() {stack1 = new ArrayDeque<>();stack2 = new ArrayDeque<>();}public void push(int x) {stack1.push(x);}public int pop() {// 必须保证第二个栈为空时才能入栈if (stack2.isEmpty()) {while (!stack1.isEmpty()) {stack2.push(stack1.pop());}}return stack2.pop();}public int peek() {// 必须保证第二个栈为空时才能入栈if (stack2.isEmpty()) {while (!stack1.isEmpty()) {stack2.push(stack1.pop());}}return stack2.peek();}public boolean empty() {return stack1.isEmpty() && stack2.isEmpty();}


第十天

二叉树前序遍历(非递归)

OJ链接

    public List<Integer> preorderTraversal(TreeNode root) {List<Integer> ret = new ArrayList<>();if(root == null) {return ret;}Deque<TreeNode> stack = new ArrayDeque<>();TreeNode cur = root;while (cur != null || !stack.isEmpty()) {while(cur != null) {stack.push(cur);ret.add(cur.val);cur = cur.left;}cur = stack.pop();cur = cur.right;}return ret;}

二叉树中序遍历(非递归)

OJ链接

    public List<Integer> inorderTraversal(TreeNode root) {List<Integer> ret = new ArrayList<>();if(root == null) {return ret;}Deque<TreeNode> stack = new ArrayDeque<>();TreeNode cur = root;while (cur != null || !stack.isEmpty()) {while(cur != null) {stack.push(cur);cur = cur.left;}cur = stack.pop();ret.add(cur.val);cur = cur.right;}return ret;}

二叉树后序遍历(非递归)

OJ链接

	public List<Integer> postorderTraversal(TreeNode root) {List<Integer> ret = new ArrayList<>();if(root == null) {return ret;}Deque<TreeNode> stack = new ArrayDeque<>();TreeNode cur = root;TreeNode tmp = null;while (cur != null || !stack.isEmpty()) {while(cur!=null) {stack.push(cur);cur = cur.left;}TreeNode top = stack.peek();if(top.right == null || top.right == tmp) {ret.add(top.val);tmp = stack.pop();}else {cur = top.right;}}return ret;}


第十一天

二叉树中序遍历

OJ链接

    public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> list = new ArrayList<>();if(root == null) {return list;}Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {List<Integer> inList = new ArrayList<>();int size = queue.size();while (size > 0) {TreeNode node = queue.poll();inList.add(node.val);size--;if (node.left != null) {queue.offer(node.left);}if (node.right != null) {queue.offer(node.right);}}list.add(inList);}return list;}

二叉树最大深度

OJ链接

    public int maxDepth(TreeNode root) {if(root == null) {return 0;}if(root.left == null && root.right == null) {return 1;}int leftDepth = maxDepth(root.left);int rightDepth = maxDepth(root.right);return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;}

对称二叉树

OJ链接

    public boolean isSymmetric(TreeNode root) {if (root == null ) {return true;}return isSymmetricChild(root.left, root.right);}public boolean isSymmetricChild(TreeNode leftRoot, TreeNode rightRoot) {if(leftRoot == null && rightRoot != null ||leftRoot!=null && rightRoot == null) {return false;}if(leftRoot == null && rightRoot == null) {return true;}if(leftRoot.val != rightRoot.val) {return false;}return isSymmetricChild(leftRoot.left, rightRoot.right)&&isSymmetricChild(leftRoot.right, rightRoot.left);}


第十二天

反转二叉树

OJ链接

    public TreeNode invertTree(TreeNode root) {if(root == null ) {return null;}TreeNode tmp = root.right;root.right = root.left;root.left = tmp;invertTree(root.left);invertTree(root.right);return root;}

路经总和

OJ链接

    public boolean hasPathSum(TreeNode root, int targetSum) {if(root == null) {return false;}targetSum -= root.val;// 走到头的情况, 判断sum是否等于0if(root.left == null && root.right == null) {if(targetSum == 0) {return true;}else {return false;}}boolean hasLeft = hasPathSum(root.left, targetSum);boolean hasRight = hasPathSum(root.right, targetSum);return hasLeft || hasRight;}


第十三天

二叉搜索树中的搜索

OJ链接

    public TreeNode searchBST(TreeNode root, int val) {if(root == null) {return null;}TreeNode cur = root;while(cur != null) {if(val > cur .val) {cur = cur.right;}else if(val == cur.val) {return cur;}else {cur = cur.left;}}return null;}

二叉搜索树中的插入

OJ链接

   public TreeNode insertIntoBST(TreeNode root, int val) {if(root == null) {return new TreeNode(val);}TreeNode cur = root;TreeNode curParent = null;while(cur != null) {curParent = cur;if(val > cur.val) {cur = curParent.right;}else {cur = curParent.left;}}if(val > curParent.val) {curParent.right = new TreeNode(val);}if(val < curParent.val){curParent.left = new TreeNode(val);}return root;}


第十四天

判断是否为二叉搜索树

OJ链接

中序遍历每一个结点, 放入list中, 然后再遍历list检查是否有序

    public boolean isValidBST(TreeNode root) {List<Integer> list = new ArrayList<>();preOrder(root, list);return check(list);}public void preOrder(TreeNode root, List<Integer> list) {if(root == null) {return;}preOrder(root.left, list);list.add(root.val);preOrder(root.right, list);}public boolean check(List<Integer> list) {for(int i = 1; i < list.size(); i++) {if(list.get(i-1) >= list.get(i)) {return false;}}return true;}

方法2, 利用LinkedList(底层是双向链表), 递归进行中序遍历, 每遍历到一个结点之前判断链表尾结点的val是否比当前结点的val值小

    public boolean isValidBST(TreeNode root) {LinkedList<Integer> list = new LinkedList<>();return inOrder(root, list);}public boolean inOrder(TreeNode root, LinkedList<Integer> list) {if(root == null) {return true;}boolean bLeft = inOrder(root.left, list);// 两种情况需要尾插// 1,第一次插入  2,到目前为止中序遍历序列有序// 否则直接返回falseif(list.isEmpty() || (bLeft && list.getLast() < root.val)) {list.add(root.val);}else {return false;}boolean bRight = inOrder(root.right, list);return bLeft && bRight;}

两数之和 IV

OJ链接

class Solution {public boolean findTarget(TreeNode root, int k) {Set<Integer> hashSet = new HashSet<>();return inOrder(root, k, hashSet);}public boolean inOrder(TreeNode root, int k, Set<Integer> hashSet) {if(root == null) {return false;}boolean bLeft = inOrder(root.left, k, hashSet);int ret = k - root.val;if(hashSet.contains(ret) ) {return true;}hashSet.add(root.val);boolean bRight = inOrder(root.right, k, hashSet);return bLeft || bRight;}

最近公共祖先

OJ链接

左边找到返回该结点, 去右边找

三种情况 :
1, 左右只有一边不为空, 哪边不为空返回哪边
2, 左右都不为空, 返回当前结点
3, 左右都为空, 返回null

    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if(root == null) {return null;}if(root.val == p.val || root.val == q.val) {return root;}TreeNode leftRet = lowestCommonAncestor(root.left, p,q);TreeNode rightRet = lowestCommonAncestor(root.right,p,q);if(leftRet != null && rightRet == null) {return leftRet;}else if(rightRet != null && leftRet == null) {return rightRet;}else if(leftRet != null && rightRet != null) {return root;}return null;}

相关文章:

Java【数据结构入门OJ题33道】——力扣刷题记录1

文章目录第一天存在重复元素最大子数组和第二天两数之和合并两个有序数组第三天两个数组的交集买卖股票最佳时机第四天重塑矩阵杨辉三角第五天有效的数独矩阵置零第六天字符串中第一个唯一字符救赎金第七天判断链表是否有环合并两个有序链表移除链表元素第八天反转链表删除重复…...

Spring事务介绍

文章目录一、编程式事务二、声明式事务&#xff08;常用&#xff09;三、事务实战详解3.1&#xff09;事务的回滚机制3.2&#xff09;事务的传播3.3&#xff09;事务超时时间3.4&#xff09;事务隔离级别3.5&#xff09;事务回滚条件Spring中对事务有两种支持方式&#xff0c;分…...

Intellij Idea如何使用VM

打开Run/Debug Configuration 然后在More option 里选择 add VM options 根据要实现的目的选择main class 比如说要建造class diagram 那就选择app.ClassDiagramGenerator 然后在下面那行输入 D:\software-engineering\2023\commons-compress\target\classes true true org.apa…...

基础04-什么时候不能使用箭头函数

箭头函数的缺点 题目 什么时候不能使用箭头函数&#xff1f; 箭头函数的缺点 没有 arguments const fn1 () > {console.log(this, arguments) // 报错&#xff0c;arguments is not defined } fn1(100, 200)无法通过 call apply bind 等改变 this const fn1 () >…...

算法小抄5-原地哈希

书接上回,学会了数组中重复数字的解法三,相信接下来的题也难不倒你 找到数组中消失的数字 题目链接 题意 对于一个大小为n的数组,数组中所有的数都在[1,n]内,其中有些数字重复了,由于有些数字重复了,另一些数字就一定会确实,这次需要找到所有缺少的数字并且返回结果 有没有发…...

java零基础入门(1)

java零基础入门一、JRE和JDK1.1 JRE1.2 JDK1.3 IDK&#xff0c;JRE&#xff0c;JVM三者的包含关系二、CMD2.1 打开CMD2.2 常用CMD命令2.2.1 盘符名称 冒号2.2.2 dir2.2.3 cd 目录2.2.4 cd ..2.2.5 cls2.2.6 exit2.2.7 cd \2.2.8 cd \目录\目录\目录\目录2.3 利用快捷cmd打开 Q…...

java socket实例

/*** 启动项目后就创建Server Socket服务*/PostConstructpublic void runServerSocket() {try {ExecutorService executorService Executors.newFixedThreadPool(10);// 创建线程池ServerSocket serverSocket new ServerSocket(9090);// 在设备上配置的服务端监听端口为9090e…...

计算机中信息的表示和处理 整数和小数的二进制表示

信息的表示和处理整数进制字移位运算无符号数和有符号数加法运算小数定点表示IEEE 浮点表示规格化和非规格化舍入浮点运算现代计算机存储和处理的信息以二值信号表示&#xff0c;这些二进制数字称为位&#xff0c;为什么要用二进制来进行编码&#xff1f;因为二进制只有1和0两种…...

Chapter2.2:线性表的顺序表示

该系列属于计算机基础系列中的《数据结构基础》子系列&#xff0c;参考书《数据结构考研复习指导》(王道论坛 组编)&#xff0c;完整内容请阅读原书。 2.线性表的顺序表示 2.1 顺序表的定义 线性表的顺序存储亦称为顺序表&#xff0c;是用一组地址连续的存储单元依次存储线性表…...

老马闲评数字化「4」做数字化会不会被供应商拿捏住

原文作者&#xff1a;行云创新CEO 马洪喜 导语 开年过后业务特别的繁忙&#xff0c;出差也比较多&#xff0c;所以有段时间没更新了&#xff0c;对不住大家&#xff01; 上一集&#xff08;您可以查看“行云创新”主页阅读原文&#xff09;咱们聊了数字化转型的“想转、急转、…...

robosuite添加无碰撞的模型

1 前言 最近在使用robosuite时,需要在仿真环境中可视化物体的目标位置,从而方便观察训练情况,可视化的物体有以下要求: 形状尺寸与操作的物体一样半透明只有visual,不与场景其他物体有碰撞可以在每次step后设置位置,且固定在设定的位置,不受重力影响 2 方法 找了半天,最终确…...

JS学习笔记day03

今日内容 零、 复习昨日 CSS 美化,复用,样式文件和表现文件分离便于维护 选择器 {属性:值;…} 引入css 内联文件内部使用style标签外部文件 <link href"路径" rel"stylesheet" type"text/css"> 选择器 基本 idclass标签名 属性 标签名…...

离散数学笔记_第一章:逻辑和证明(3)

1.3 命题等价式1.3.1 逻辑等价式 1.3.2 条件命题和双条件命题的逻辑等价式 1.3.3 德摩根律 1.3.4 可满足性 可满足的 不可满足的 可满足性问题的解 1.3.5析取范式&#xff08;基本积之和&#xff09;&#xff0c;合取范式&#xff08;基本和之积&#xff09;1.3.6合式公式1…...

软件测试分类知识分享,第三方软件测试机构收费贵不贵?

软件测试可以很好的检验软件产品的质量以及规避产品上线之后可能会发生的错误&#xff0c;随着技术的发展&#xff0c;软件测试已经是一个完整且体系庞大的测试活动&#xff0c;不同的测试领域有着不同的测试方法、技术与名称&#xff0c;那么具体有哪些分类呢? 一、软件测试…...

爬虫(二)解析数据

文章目录1. Xpath2. jsonpath3. BeautifulSoup4. 正则表达式4.1 特殊符号4.2 特殊字符4.3 限定符4.3 常用函数4.4 匹配策略4.5 常用正则爬虫将数据爬取到后&#xff0c;并不是全部的数据都能用&#xff0c;我们只需要截取里面的一些数据来用&#xff0c;这也就是解析爬取到的信…...

【C++、C++11】可变参数模板、lambda表达式、包装器

文章目录&#x1f4d6; 前言1. 可变参数模板1.1 万能模板&#xff1a;1.2 完美转发&#xff1a;1.3 可变参数模板的使用&#xff1a;1.4 emplace_back&#xff1a;2. lambda表达式2.1 lambda表达式的定义&#xff1a;2.2 lambda表达式的用法&#xff1a;2.2 - 1 捕捉列表的用法…...

外贸主机测评

一、俄罗斯vps 服务商&#xff1a; JUSTG: Home - Sun Network Company Limited LOCVPS: LOCVPS 全球云 - 十年老牌 为跨境外贸/远程办公/网站建设提供澎湃动力 JUSTHOST: justhost.ru RUVDS: Gcorelabs: 二、主机测评指标&#xff1a; 1、速度、延迟、丢包、路由测试…...

Meta CTO:Quest 2生命周期或比预期更久

前不久&#xff0c;Meta未来4年路线图遭曝光&#xff0c;泄露了该公司正在筹备中的一些AR/VR原型。除此之外&#xff0c;还有消息称Quest Pro或因销量不佳&#xff0c;而不再迭代。毫无疑问&#xff0c;Meta的一举一动持续受到行业关注&#xff0c;而面对最近的爆料&#xff0c…...

Vector - CAPL - 文件处理函数

在当前平台化的趋势下,就算是协议层测试依然需要适配各种各样的项目,也需要处理各类型的文件,那我们如何对文件进行读取、写入、修改等类型的操作呢?今天我们就会介绍此类型的函数,主要适用于text、bin文件的处理。 打开文件 Open...

实力加持!RestCloud完成多方国产化适配,携手共建信创生态

近年来&#xff0c;随着数字化建设进入深水区&#xff0c;企事业单位对信息安全重视程度与日俱增&#xff0c;核心技术自主可控已成为时代呼唤&#xff0c;国产化浪潮日益汹涌澎湃。近日&#xff0c;RestCloud在国产化方面取得新进展&#xff0c;完成了全部产品线信创环境的多方…...

Unity 3D GUI教程||OnGUI TextArea 控件||OnGUI ScrollView 控件

OnGUI TextArea 控件 Unity 3D TextArea 控件用于创建一个多行的文本编辑区。用户可以在多行文本编辑区编辑文本内容。 该控件可以对超出控件宽度的文本内容实现换行操作。 TextArea 控件同样会将当前文本编辑区中的文本内容以字符串形式返回。 开发人员可以通过创建 Strin…...

Leetcode.828 统计子串中的唯一字符

题目链接 Leetcode.828 统计子串中的唯一字符 Rating &#xff1a; 2034 题目描述 我们定义了一个函数 countUniqueChars(s)来统计字符串 s中的唯一字符&#xff0c;并返回唯一字符的个数。 例如&#xff1a;s "LEETCODE"&#xff0c;则其中 "L", "…...

Hibernate 相关特性

1. Hibernate一般使用hql进行查询&#xff0c;但也有sql执行的方法 Native sql 查询,。需要注意的是&#xff0c;使用Native SQL查询可能会破坏Hibernate的缓存机制&#xff0c;并可能导致性能问题 String sql "SELECT * FROM users WHERE age > :age"; Query …...

【研究生学术英语读写教程翻译 中国科学院大学Unit1-Unit8】

Unit1 Descartes Was Wrong 笛卡尔错了:“他人在,故我在” Unit2 Are we ready for the next volcanic catastrophe?我们准备好应对下一次火山灾难了吗? Unit3 Theorists,experimentalists and the bias in popular physics理论家,实验家和大众物理学的偏见 unit4 Magic Nu…...

ListView 控件的使用

第一步&#xff1a;找到ListView的控件通过findViewById 找到ListView的控件 ListView listView findViewById(R.id.listView);第二步&#xff1a;创建Bean类 得到set和get的方法解析获取的数据创建Bean类 得到set和get的方法public class Bean {String nanm""; pub…...

域控制器搭建以及成员加入

需要iso&#xff1a;windows server 2016软件使用&#xff1a;vmwarewindows server 2016系统搭建自己选iso&#xff0c;一直下一步就可以安装完成。&#xff08;记得要设置密码&#xff09;&#xff08;密码要求大小写字母数字符号&#xff09;等待就能安装完成。安装和配置Ac…...

利用 MLP(多层感知器)和 RBF(径向基函数)神经网络解决的近似和分类示例问题(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 1、径向基神经网络 径向基函数网络是由三层构成的前向网络&#xff1a;第一层为输入层&#xff0c;节点个数的能与输入的维数&…...

进阶C语言——数据的存储【详解】

文章目录1. 数据类型介绍1.1 类型的基本归类2. 整形在内存中的存储2.1 原码、反码、补码2.2 大小端介绍2.3 练习3. 浮点型在内存中的存储3.1 一个例子3.2 浮点数存储的规则1. 数据类型介绍 前面我们已经学习了基本的内置类型&#xff1a; char //字符数据类型 short //短整型 …...

KUKA机器人修改机器人名称和IP地址的具体方法示例

KUKA机器人修改机器人名称和IP地址的具体方法示例 修改机器人名称 如下图所示,首先切换用户组到管理员,输入默认密码:kuka, 如下图所示,点击菜单键—投入运行—机器人数据, 如下图所示,此时可以看到机器人的名称为rrr445, 如下图所示,修改之后,点击左侧的“”…...

【数据分析师求职面试指南】必备基础知识整理

数据分析师基础知识统计 数据分析知识基础概念随机变量常用特征正态分布与大数定律、中心极限定律假设检验模型、数据挖掘知识常用概念数据集划分欠拟合过拟合模型分类方法常见模型介绍线性回归模型&#xff1a;逻辑回归模型决策树模型随机森林模型Boosting模型XGBoost模型模型…...

《开关电源宝典 降压电路(BUCK)的原理与应用》

嗨&#xff0c;硬件攻城狮或电源工程师同行们&#xff0c;我想写本专门解析BUCK电源电路的书籍&#xff0c;以下是“前言”内容的部分摘录以及当前的目录&#xff0c;当前已经完成22万多字500多页了&#xff0c;即使如此&#xff0c;离真正出版书籍&#xff0c;还有很长的路要走…...

R语言基础(一):注释、变量

R语言用于统计分析和绘制图表等操作。不同于Java等其它语言&#xff0c;R用于统计&#xff0c;而不是做一个网站或者软件&#xff0c;所以R的一些开发习惯和其它语言不同。如果你是一个编程小白&#xff0c;那么可以放心大胆的学。如果你是一个有编程基础的人&#xff0c;那么需…...

Java 集合进阶(二)

文章目录一、Set1. 概述2. 哈希值3. 元素唯一性4. 哈希表5. 遍历学生对象6. LinkedHashSet7. TreeSet7.1 自然排序7.2 比较器排序8. 不重复的随机数二、泛型1. 概述2. 泛型类3. 泛型方法4. 泛型接口5. 类型通配符6. 可变参数7. 可变参数的使用一、Set 1. 概述 Set 集合特点&am…...

小孩用什么样的台灯比较好?2023眼科医生青睐的儿童台灯推荐

小孩子属于眼睛比较脆弱的人群&#xff0c;所以选购护眼台灯时&#xff0c;选光线温和的比较好&#xff0c;而且调光、显色效果、色温、防蓝光等方面也要出色&#xff0c;否则容易导致孩子近视。 1、调光。台灯首先是照度高&#xff0c;国AA级&#xff0b;大功率发光&#xff0…...

Ubuntu c++ MySQL数据库操作

mysql安装sudo apt-get install updatesudo apt-get install mysql-server libmysqlclient-dev mysql-workbenchmysql启动/重启/停止sudo service mysql start/restart/stop登录mysql命令&#xff1a;mysql -uroot -p错误异常&#xff1a;解决办法&#xff1a;修改mysqld.cnf配…...

C++11:lambda表达式

文章目录1. 概念2. 语法3. 示例示例1示例2示例3示例44. 捕捉方式基本方式隐式和混合补充5. 传递lambda表达式示例6. 原理7. 内联属性1. 概念 lambda表达式实际上是一个匿名类的成员函数&#xff0c;该类由编译器为lambda创建&#xff0c;该函数被隐式地定义为内联。因此&#…...

【Android -- 开源库】表格 SmartTable 的基本使用

介绍 1. 功能 快速配置自动生成表格&#xff1b;自动计算表格宽高&#xff1b;表格列标题组合&#xff1b;表格固定左序列、顶部序列、第一行、列标题、统计行&#xff1b;自动统计&#xff0c;排序&#xff08;自定义统计规则&#xff09;&#xff1b;表格图文、序列号、列标…...

自动化测试实战篇(9),jmeter常用断言方法,一文搞懂9种测试字段与JSON断言

Jmeter常用的断言主要有&#xff0c;JSON断言和响应断言这两种方式。 断言主要就是帮助帮助人工进行快速接口信息验证避免繁杂的重复的人工去验证数据 第一种响应断言Apply to&#xff1a;表示应用范围测试字段&#xff1a;针对响应数据进行不同的匹配响应文本响应代码响应信息…...

vue-virtual-scroll-list虚拟列表

当DOM中渲染的列表数据过多时&#xff0c;页面会非常卡顿&#xff0c;非常占用浏览器内存。可以使用虚拟列表来解决这个问题&#xff0c;即使有成百上千条数据&#xff0c;页面DOM元素始终控制在指定数量。 一、参考文档 https://www.npmjs.com/package/vue-virtual-scroll-li…...

C++学习笔记(以供复习查阅)

视频链接 代码讲义 提取密码: 62bb 文章目录1、C基础1.1 C初识&#xff08;1&#xff09; 第一个C程序&#xff08;2&#xff09;注释&#xff08;3&#xff09;变量&#xff08;4&#xff09;常量&#xff08;5&#xff09;关键字&#xff08;6&#xff09;标识符命名规则1.2 …...

备份时间缩短为原来 1/4,西安交大云数据中心的软件定义存储实践

XEDP 统一数据平台为西安交通大学云平台业务提供可靠的备份空间和强大的容灾能力&#xff0c;同时确保数据安全。西安交通大学&#xff08;简称“西安交大”&#xff09;是我国最早兴办、享誉海内外的著名高等学府&#xff0c;是教育部直属重点大学。学校现有兴庆、雁塔、曲江和…...

我国近视眼的人数已经超过了六亿,国老花眼人数超过三亿人

眼镜是一种用于矫正视力问题、改善视力、减轻眼睛疲劳的光学器件&#xff0c;在我们的生活中不可忽略的一部分&#xff0c;那么我国眼镜市场发展情况是怎样了&#xff1f;下面小编通过可视化互动平台对我国眼镜市场的状况进行分析。我国是一个近视眼高发的国家&#xff0c;据统…...

设计模式(十八)----行为型模式之策略模式

1、概述 先看下面的图片&#xff0c;我们去旅游选择出行模式有很多种&#xff0c;可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿&#xff0c;开发需要选择一款开发工具&#xff0c;当然可以进行代码开发的工具有很多&#xff0c;可以选择Idea进行开发&a…...

VUE3入门基础:input元素的type属性值说明

说明 在Vue 3中&#xff0c;<input>元素的type属性可以设置不同的类型&#xff0c;以适应不同的输入需求。 常见的type属性取值如下&#xff1a; text&#xff1a;默认值&#xff0c;用于输入文本。password&#xff1a;用于输入密码&#xff0c;输入内容会被隐藏。em…...

关于供应链,一文教你全面了解什么是供应链

什么是供应链&#xff1f;供应链是指产品生产和流通过程中所涉及的原材料供应商、生产商、分销商、零售商以及最终消费者等成员通过与上游、下游成员的连接 (linkage) 组成的网络结构。也即是由物料获取、物料加工、并将成品送到用户手中这一过程所涉及的企业和企业部门组成的一…...

Scope作用域简单记录分析

类型 singleton 单例作用域 prototype 原型作用域 request web作用域,请求作用域,生命周期跟request相同,请求开始bean被创建,请求结束bean被销毁 session web作用域,会话作用域,会话开始bean被创建,会话结束bean被销毁 application web作用域,应用程序作用域,应用程序创建…...

ChatGPT创作恋爱甜文

林欣是一个长相可爱、性格呆萌的小姑娘&#xff0c;她年纪轻轻就失去了父母&#xff0c;独自一人面对世界的冷漠和残酷。 虽然经历了这样的打击&#xff0c;但她并没有沉沦&#xff0c;反而更加努力地去生活。 她找到了一份服务员的工作&#xff0c;每天在餐厅里穿梭&#xf…...

贝叶斯优化及其python实现

贝叶斯优化是机器学习中一种常用的优化技术&#xff0c;其目的是在有限步数内寻找函数的最大值或最小值。它可以被视为在探索不同参数配置与观察这些配置结果之间寻求平衡点的过程。基本思想是将我们在过去的观察和体验&#xff0c;传递到下一个尝试中&#xff0c;从而在等待数…...

Lombok使用@Builder无法build父类属性

文章目录问题描述解决方案使用示例lombok Builder注解和build父类属性问题1、简介2.使用3、Builder注解对类做了什么&#xff1f;问题描述 实体类使用Lombok的Builder来实现Builder模式&#xff0c;但是如果使用了extend继承&#xff0c;则子类无法通过Builder来Build父类属性…...

Pixhawk RPi CM4 Baseboard 树莓派CM4安装Ubuntu20.04 server 配置ros mavros mavsdk

文章目录硬件安装Ubuntu Server20.04下载rpiboot工具下载imager刷写系统配置USB配置WIFI开机安装桌面配置wifi配置串口安装ROS安装mavros安装MAVSDK-PythonInternet设置最后参考&#xff1a; https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-rpi-cm4-baseboard…...