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

台州seo网站排名西安做网站哪里好

台州seo网站排名,西安做网站哪里好,为企业建网站过时了,天津设计公司排行榜哈喽#xff0c;各位小伙伴们#xff0c;你们好呀#xff0c;我是喵手。运营社区#xff1a;C站/掘金/腾讯云#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点#xff0c;并以文字的形式跟大家一起交流#xff0c;互相学习#xff0c;一… 哈喽各位小伙伴们你们好呀我是喵手。运营社区C站/掘金/腾讯云欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点并以文字的形式跟大家一起交流互相学习一个人虽可以走的更快但一群人可以走的更远。 我是一名后端开发爱好者工作日常接触到最多的就是Java语言啦所以我都尽量抽业余时间把自己所学到所会的通过文章的形式进行输出希望以这种方式帮助到更多的初学者或者想入门的小伙伴们同时也能对自己的技术进行沉淀加以复盘查缺补漏。 小伙伴们在批阅的过程中如果觉得文章不错欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持 前言 在Java开发中数组几乎是无处不在的数据结构。在处理大量数据时数组可以优化算法和提高性能。但是除了简单的数组操作之外还有很多有趣且实用的应用场景这些场景在实际工作中也很常见但并不为人所知。 本文将介绍一些常用但不为人知的数组应用场景希望能为开发者提供一些帮助。 摘要 本文将介绍数组的一些常用但不为人知的应用场景包括二维数组的应用数组的旋转、查找、去重等操作以及在算法中使用数组等场景。还将对这些应用场景的优缺点进行分析并提供相应的类代码和测试用例。 正文 简介 数组在Java中是一种基本的数据结构可以表示连续的内存空间。它可以用来存储一组相同数据类型的元素。Java中的数组可以是一维或多维的而且数组的大小一旦确定就无法更改。 本文将介绍数组的几种常用但不为人知的应用场景包括二维数组的应用数组的旋转、查找、去重等操作以及在算法中使用数组等场景。并且将分析这些应用场景的优缺点并提供相应的示例代码和测试用例。 源代码解析 二维数组的应用 二维数组是由多个一维数组组成的可以理解为一个表格行和列分别对应数组的第一维和第二维。它在Java中的应用非常广泛尤其在矩阵计算、图像处理、游戏等方面。 二维数组的定义和初始化 在Java中二维数组的定义和初始化方式如下 int[][] array new int[3][4];这表示创建一个3行4列的二维数组。我们也可以使用另一种方式初始化二维数组 int[][] array {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};这种方式可以直接初始化二维数组的每个元素。 二维数组的遍历 二维数组的遍历方式通常有两种 使用嵌套循环遍历每一个元素。使用Java8的流和Lambda表达式来遍历每一个元素。 下面是使用嵌套循环遍历二维数组 for (int i 0; i array.length; i) {for (int j 0; j array[i].length; j) {System.out.print(array[i][j] );}System.out.println(); }这个例子中我们首先使用一个外层循环来遍历每一行然后在内层循环中遍历每一列。 下面是使用Java8流和Lambda表达式来遍历二维数组 Arrays.stream(array).forEach(row - {Arrays.stream(row).forEach(num - System.out.print(num ));System.out.println(); });这个例子中我们首先使用Arrays.stream()方法将二维数组转换成一个流然后使用forEach()方法和Lambda表达式来遍历每个元素和前面的方法相比这个方法更简洁。 数组的旋转、查找、去重等操作 数组的旋转 数组的旋转是将数组中的元素按照某个规律进行旋转。在实际工作中数组的旋转操作常用于图像处理、游戏等方面。 下面是一个将二维数组旋转90度的例子 public static int[][] rotate(int[][] matrix) {int n matrix.length;int[][] result new int[n][n];for (int i 0; i n; i) {for (int j 0; j n; j) {result[j][n - i - 1] matrix[i][j];}}return result; }这个方法中我们使用一个新的二维数组来存储旋转后的结果。我们使用两个循环遍历原始矩阵中的元素并将其存储到旋转后的新矩阵中。 代码分析 该代码定义了一个名为rotate的静态方法接受一个二维整型数组matrix作为参数返回一个旋转后的二维整型数组。 接下来使用变量n记录矩阵的边长即矩阵的行数和列数。创建一个新的二维整型数组result其行数和列数都为n。结果数组用于存储旋转后的矩阵。 接着使用两个循环遍历原始矩阵matrix中的每个元素。通过将原始矩阵中第i行第j列的元素赋值到结果矩阵中第j行第n-i-1列的位置来将原始矩阵顺时针旋转90度。这个旋转公式可以这样理解结果矩阵中的每一行都等于原始矩阵中的每一列但是顺序被反过来且行列索引值有所变化。 最后返回旋转后的矩阵result。 数组的查找 数组的查找是在一个数组中查找一个特定的元素。在实际工作中数组的查找操作经常用于数据检索、搜索等方面。 下面是一个使用二分查找来查找一个元素在一个已排序的数组中的位置的例子 public static int binarySearch(int[] sortedArray, int key) {int low 0;int high sortedArray.length - 1;while (low high) {int mid (low high) / 2;if (sortedArray[mid] key) {low mid 1;} else if (sortedArray[mid] key) {high mid - 1;} else {return mid;}}return -1; }这个方法中我们使用一个while循环进行二分查找。在每一次循环中我们将要查找的元素和数组中间元素进行比较然后根据比较结果将要查找的范围缩小一半。 代码分析 这段代码是一个二分查找算法接收一个已排序的整数数组和一个关键字返回关键字在数组中的索引值如果存在或者-1如果不存在。 首先定义两个变量low和high分别代表数组的起始和终止索引。 然后使用一个while循环来不断缩小搜索范围直到找到关键字或者确定关键字不存在。 在每次循环中算出数组中间元素的索引mid并与关键字进行比较。如果中间元素小于关键字则将搜索范围缩小到右半部分即将low设为mid1如果中间元素大于关键字则将搜索范围缩小到左半部分即将high设为mid-1如果中间元素等于关键字则找到关键字返回mid。 如果循环结束后仍然没有找到关键字则说明关键字不存在返回-1。 总体来说这段代码的时间复杂度为O(log n)可以快速找到数组中的元素。 数组的去重 数组的去重是将一个数组中重复的元素去掉只保留不重复的元素。在实际工作中数组的去重操作常用于数据清洗、统计等方面。 下面是一个将数组中重复元素去掉的例子 public static int[] removeDuplicates(int[] array) {if (array null || array.length 0) {return array;}int len array.length;Arrays.sort(array);int j 0;for (int i 0; i len - 1; i) {if (array[i] ! array[i 1]) {array[j] array[i];}}array[j] array[len - 1];return Arrays.copyOf(array, j); }这个方法中我们首先对数组进行排序然后使用一个循环遍历数组中的元素如果当前元素和下一个元素不相同则将当前元素存储到一个新数组中。最后我们使用Arrays.copyOf()方法返回一个新的数组长度为j。 代码分析 这段代码是一个静态方法接收一个整数数组作为参数并返回一个去重后的整数数组。 首先代码进行了一些边界判断如果传入的数组为 null 或长度为 0则直接返回原数组。 然后对数组进行排序这样相同的元素就会排列在一起。 紧接着定义了一个变量 j 来记录去重后的数组中有效元素的个数初始值为 0。 接下来使用 for 循环遍历数组如果当前元素和后一个元素不相等则将当前元素添加到去重后的数组中并将变量 j 加 1。 最后将数组的最后一个元素添加到去重后的数组中并返回数组的前 j 个元素即为去重后的数组。 可以看出这段代码的时间复杂度为 O(nlogn)其中 n 为数组的长度。因为要进行排序操作虽然去重操作只需要一次遍历但排序的复杂度占据了主要部分。 在算法中使用数组 在算法中数组通常用于优化算法和提高性能。例如我们可以使用一个数组来记录某个数出现的次数然后快速找到出现次数最多的数。 下面是一个找出数组中出现次数最多的元素的例子 public static int findMostFrequentElement(int[] elements) {int n elements.length;MapInteger, Integer count new HashMap();for (int i 0; i n; i) {if (!count.containsKey(elements[i])) {count.put(elements[i], 0);}count.put(elements[i], count.get(elements[i]) 1);}int mostFrequentElement -1, maxCount -1;for (Map.EntryInteger, Integer entry : count.entrySet()) {if (entry.getValue() maxCount) {mostFrequentElement entry.getKey();maxCount entry.getValue();}}return mostFrequentElement; }这个方法中我们首先使用一个Map来记录每个元素出现的次数然后使用一个循环遍历数组中的元素并将其存储到Map中。最后我们使用另一个循环 代码分析 这个方法接收一个整型数组作为参数然后返回该数组中出现次数最多的元素。 方法首先创建一个 HashMap并迭代元素数组中的每个元素对每个元素进行计数。如果元素在 HashMap 中不存在就将该元素加入到 HashMap 中并设置为出现次数为零。然后将该元素的出现次数加一。 接下来方法遍历 HashMap 中的每个元素并跟踪出现次数最多的元素和它的出现次数。如果当前元素的出现次数比已知最大出现次数要大则将最大出现次数更新为当前元素的出现次数并将最频繁出现的元素设置为当前元素。 最后该方法返回最频繁出现的元素。如果该数组中所有元素都只出现了一次则返回 -1。 数组的常用但不为人知的应用场景 1. 二维数组的转置 在实际工作中我们经常需要对矩阵进行转置。对于一个二维数组转置指的是将其行和列对调。 下面是一个二维数组转置的例子 public static int[][] transpose(int[][] matrix) {int n matrix.length;int m matrix[0].length;int[][] result new int[m][n];for (int i 0; i m; i) {for (int j 0; j n; j) {result[i][j] matrix[j][i];}}return result; }代码分析 这段代码实现了矩阵的转置操作即将矩阵的行列互换。具体分析如下 首先该方法接收一个二维数组matrix作为参数其中n表示matrix数组的行数m表示matrix数组的列数。 接着定义一个新的二维数组result其行数是原矩阵的列数列数是原矩阵的行数这里的目的是为了存储转置后的矩阵。 然后通过嵌套的for循环遍历原矩阵将原矩阵的第i行第j列的元素赋值给新矩阵的第j行第i列的元素从而完成矩阵的转置操作即将矩阵的行列互换。 最后返回转置后的矩阵result。 总体来说这段代码实现了简单的矩阵转置算法具有较高的可读性和易于理解的特点。 2. 数组的旋转 数组的旋转是指将一个数组中的元素按照某个规律进行旋转。在实际工作中数组的旋转操作常用于图像处理、游戏等方面。 下面是一个将数组旋转k次的例子 public static void rotate(int[] nums, int k) {int n nums.length;k k % n;reverse(nums, 0, n - 1);reverse(nums, 0, k - 1);reverse(nums, k, n - 1); }private static void reverse(int[] nums, int start, int end) {while (start end) {int temp nums[start];nums[start] nums[end];nums[end] temp;start;end--;} }这个例子中我们首先计算出旋转的次数k。然后我们首先将整个数组反转然后再将前k个元素反转最后再将剩余的元素反转。 代码分析 这段代码实现了将长度为n的整数数组nums中的元素向右旋转k个位置。具体做法是先将整个数组反转再将前k个元素反转最后将剩下的n-k个元素反转。这样做的时间复杂度为O(n)空间复杂度为O(1)。 例如给定数组nums[1,2,3,4,5,6,7]旋转3个位置则按照上述算法进行操作 将整个数组反转得到[7,6,5,4,3,2,1] 将前3个元素反转得到[5,6,7,4,3,2,1] 将剩下的4个元素反转得到[5,6,7,1,2,3,4] 最终得到的数组就是旋转后的结果。 这段代码中用到了一个双指针的技巧即用两个指针start和end分别指向数组的开头和结尾然后不停地交换它们所指向的元素直到它们相遇为止这样就可以实现数组反转的功能。 3. 数组的查找 数组的查找是指在一个数组中查找一个特定的元素。在实际工作中数组的查找操作经常用于数据检索、搜索等方面。 下面是一个使用二分查找来查找一个元素在一个已排序的数组中的位置的例子 public static int binarySearch(int[] sortedArray, int key) {int low 0;int high sortedArray.length - 1;while (low high) {int mid (low high) / 2;if (sortedArray[mid] key) {low mid 1;} else if (sortedArray[mid] key) {high mid - 1;} else {return mid;}}return -1; }代码分析 这是一个二分查找算法的实现接受一个已排序的整数数组和一个要查找的元素返回该元素在数组中的索引。 算法的核心思想是将数组取中间位置的元素与要查找的元素进行比较如果中间元素小于要查找的元素则在中间元素的右半部分继续查找反之则在左半部分继续查找直到找到要查找的元素或者数组被遍历完毕。 在每次查找过程中都会将数组的范围缩小一半因此最差情况下的时间复杂度为O(log n)。 如果要查找的元素不存在于数组中则返回-1。 4. 数组的去重 数组的去重是将一个数组中重复的元素去掉只保留不重复的元素。在实际工作中数组的去重操作常用于数据清洗、统计等方面。 下面是一个将数组中重复元素去掉的例子 public static int[] removeDuplicates(int[] array) {if (array null || array.length 0) {return array;}int len array.length;Arrays.sort(array);int j 0;for (int i 0; i len - 1; i) {if (array[i] ! array[i 1]) {array[j] array[i];}}array[j] array[len - 1];return Arrays.copyOf(array, j); }代码分析 这段代码实现了一个移除数组中重复元素的方法算法的时间复杂度是O(nlogn)其中n为数组的长度。 具体操作步骤如下 首先对数组进行排序使相同的元素排在一起。 然后使用双指针法定义指针i和指针j指针i从0开始依次遍历数组中的元素指针j记录不重复的元素个数。 当发现array[i]与array[i1]不相同时说明发现了新元素将它加入到结果数组并将指针j向后移动一位。 最后将数组截取长度为j返回不重复的元素数组。 总的来说这个算法在空间复杂度上比较低只需要O(1)的额外空间用于记录指针但时间复杂度偏高相对于使用哈希表或者Set等数据结构其速度较慢。 5. 在算法中使用数组 在算法中数组通常用于优化算法和提高性能。例如我们可以使用一个数组来记录某个数出现的次数然后快速找到出现次数最多的数。 下面是一个找出数组中出现次数最多的元素的例子 package com.example.javase.se.array;import java.util.HashMap; import java.util.Map;/*** Author ms* Date 2023-11-14 21:11*/ public class ArrayTest7 {public static int findMostFrequentElement(int[] elements) {int n elements.length;MapInteger, Integer count new HashMap();for (int i 0; i n; i) {if (!count.containsKey(elements[i])) {count.put(elements[i], 0);}count.put(elements[i], count.get(elements[i]) 1);}int mostFrequentElement -1, maxCount -1;for (Map.EntryInteger, Integer entry : count.entrySet()) {if (entry.getValue() maxCount) {mostFrequentElement entry.getKey();maxCount entry.getValue();}}return mostFrequentElement;}public static void main(String[] args) {} }代码分析 这是一个 Java 类名为 ArrayTest7。它包含了一个静态方法 findMostFrequentElement用于查找给定数组中出现次数最多的元素。在该方法中首先创建了一个名为 count 的 HashMap用于存储每个元素出现的次数。然后遍历了整个数组元素并在 count 中更新了相应元素的出现次数。接下来使用循环遍历 count 中的所有元素并找出出现次数最多的元素并将其值赋给了 mostFrequentElement 变量。最后该方法返回了出现次数最多的元素。在 main 方法中没有任何代码。 执行结果 小结 数组是Java中常用的数据结构之一能够优化算法并提高性能。除了常规的数组操作之外还有很多有趣且实用的应用场景如二维数组的转置、数组的旋转、查找、去重等操作以及在算法中使用数组等。这些应用场景在实际工作中也很常见但并不为人所知。希望本文能为开发者提供一些帮助。 总结 本文介绍了数组常用但不为人知的几种应用场景包括二维数组的转置、数组的旋转、查找、去重等操作以及在算法中使用数组等。这些应用场景在实际工作中也很常见但并不为人所知。通过学习这些应用场景可以更好地优化算法并提高性能同时也能够帮助开发者更好地应对实际工作中的问题。 总的来说本文对数组的应用场景进行了详细的讲解并提供了相应的示例代码和测试用例。对于想要提高编程技术的开发者来说本文是一篇不错的学习资料值得一读。 … … 文末 好啦以上就是我这期的全部内容如果有任何疑问欢迎下方留言哦咱们下期见。 … … 学习不分先后知识不分多少事无巨细当以虚心求教三人行必有我师焉 wished for you successed ⭐️若喜欢我就请关注我叭。 ⭐️若对您有用就请点赞叭。 ⭐️若有疑问就请评论留言告诉我叭。
http://www.w-s-a.com/news/876405/

相关文章:

  • 凡科网建站入门教程运城市网站建设
  • 黄浦区未成年人思想道德建设网站oa系统是什么
  • 微信里的网站怎么做电子商务网站开发平台
  • 易企秀网站怎么做轮播图网站建设张世勇
  • 网站备案幕布尺寸建立网页的几个步骤
  • pc网站页面找出网站所有死链接
  • 专业做seo的网站网站内连接
  • 阿里云网站开发服务器想开网站建设公司
  • 网站开发不足之处茶叶seo网站推广与优化方案
  • 响应式网站建设系统网站优化怎么做 有什么技巧
  • 班级网站做哪些方面wordpress标签 扩展
  • 如何在电商上购物网站Wordpress 域名授权插件
  • 网站建设后台怎么弄昆明如何做好关键词推广
  • 自己怎么做个网站优酷视频网站开发
  • 2015做网站前景电子商务营销的发展现状
  • 官方网站建设情况说明电子商务网站开发的形式有
  • 网站建设玖金手指排名11专业建站公司建站系统
  • 全球排名前十网站百度网站官网网址
  • 商家在携程旅游网站怎样做宣传做网站公司苏州
  • 芜湖做网站都有哪些广州音乐制作公司
  • 青岛好的网站制作推广注册公司流程步骤
  • 怎么制作营销网站模板wordpress苗木模板
  • 手机网站样例wordpress 排序
  • 济南网站建设手机网站开发人员需要去做原型吗
  • 动易网站模板下载微信支付 wordpress
  • 学校建设外文网站情况阿里云 建设网站怎么样
  • 网站建设与网页设计制作深圳网站建设首选上榜网络
  • 网站浏览成交指标计算机应用是做什么的
  • 企业网站建设的要求wordpress 404页面模板
  • 公司怎么注册官方网站wordpress花园网站