LeetCode数组与字符串基础训练

  • 前言
    • 数组 是数据结构中的基本模块之一。因为 字符串 是由字符数组形成的,所以二者是相似的。大多数面试问题都属于这个范畴。
    • gitee网址:https://gitee.com/kittysmith5/csharp-learning-record
  • 训练内容
    1. 寻找数组的中心索引
       1 public class Solution {
       2         public int PivotIndex(int[] nums) {
       3             int sum = 0, left = 0;
       4             for (int i = 0; i < nums.Length; i++) sum += nums[i];
       5             if (sum - nums[0] == 0) return 0;
       6             for (int i = 1; i < nums.Length; i++) {
       7                 left += nums[i - 1];
       8                 if (left == sum - nums[i] - left) return i;//left to equels right
       9             }
      10             return -1;
      11        }
      12 }

       

    2. 旋转矩阵

       1     public void Rotate(int[][] matrix)
       2         {
       3             int matrixSize = matrix.Length;
       4             int[][] transposed = new int[matrixSize][];
       5             for (int j = 0; j < matrixSize; j++)
       6             {
       7                 int[] transposedRow = new int[matrixSize];
       8                 for (int i = 0; i < matrixSize; i++)
       9                 {//数学规律推导
      10                     transposedRow[matrixSize - i - 1] = matrix[i][j];
      11                 }
      12                 transposed[j] = transposedRow;
      13             }
      14             for (int i = 0; i < matrixSize; i++)
      15             {
      16                 for (int j = 0; j < matrixSize; j++)
      17                 {//中转
      18                     matrix[i][j] = transposed[i][j];
      19                 }
      20             }
      21         }

       

    • 翻转字符串里的单词

       1 using System.Text.RegularExpressions;//导入正则
       2 public class Solution {
       3     public string ReverseWords(string s) {
       4         s = s.Trim();
       5         string[] ss = Regex.Split(s,"\\s+");//一个或多个空格或者tab
       6         string sss = "";
       7         for (int i = ss.Length-1; i>0 ; i--) {
       8             sss+=ss[i]+" ";
       9         }
      10         sss+=ss[0];
      11         return sss;
      12     }
      13 }

  • 总结

    1. 这里有一些其他类似于数组的数据结构,但具有一些不同的属性:

      字符串(已包含在本 LeetBook 中)
      哈希表
      链表
      队列

      2.正如我们所提到的,我们可以调用内置函数来对数组进行排序。但是,理解一些广泛使用的排序算法的原理及其复杂度是很有用的。

      3.二分查找也是一种重要的技术,用于在排序数组中搜索特定的元素。

      4.我们将用双指针技巧。想要灵活运用该技巧是不容易的。这一技巧也可以用来解决:

      链表中的慢指针和快指针问题
      滑动窗口问题
      双指针技巧有时与贪心算法有关,它可以帮助我们设计指针的移动策略。

posted @ 2021-03-15 20:29  KittySmith  阅读(55)  评论(0编辑  收藏  举报