数组

  1. 旋转图像:https://leetcode-cn.com/problems/rotate-image/submissions/
    class Solution {
     public void rotate(int[][] matrix) {
         if(matrix.length == 0 || matrix[0].length == 0){
             return;
         }
         //先上下翻转
         for(int i=0;i<matrix.length/2;i++){
             int[] temp = matrix[i];
             matrix[i] = matrix[matrix.length-i-1];
             matrix[matrix.length-i-1] = temp;
         }
         //对角翻转
         for(int i=0;i<matrix.length;i++){
             for(int j=0;j<i;j++){
                 int temp = matrix[i][j];
                 matrix[i][j] = matrix[j][i];
                 matrix[j][i] = temp;
             }
         }
     }
    }
  1. LRU:https://leetcode-cn.com/problems/lru-cache/submissions/

  2. 旋转数组:https://leetcode-cn.com/problems/rotate-array/submissions/

    class Solution {
     public void rotate(int[] nums, int k) {
         //k对len取余,得到最小的旋转次数
         k = k%nums.length;
         //先整个数组翻转一次
         swap(nums,0,nums.length-1);
         //翻转前k-1个
         swap(nums,0,k-1);
         //翻转剩余的
         swap(nums,k,nums.length-1);
     }
    
     public void swap(int[] nums,int left,int right){
         while(left < right){
             int temp = nums[left];
             nums[left] = nums[right];
             nums[right] = temp;
             left++;
             right--;
         }
     }
    }
  3. 除自身外的乘积:https://leetcode-cn.com/problems/product-of-array-except-self/comments/

    class Solution {
     public int[] productExceptSelf(int[] nums) {
         if(nums.length == 0){
             return new int[0];
         }
         int[] result = new int[nums.length];
         //初始化left为1,从左往右搜索,result不叠乘left
         int left = 1;
         for(int i=0;i<nums.length;i++){
             result[i] = left;
             left *= nums[i];
         }
         //初始化right为1,从右往左搜,result叠乘right
         int right = 1;
         for(int i=nums.length-1;i>=0;i--){
             result[i] *= right;
             right *= nums[i];
         }
         return result;
     }
    }
  4. 找到所有消失的数:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/submissions/

    class Solution {
     public List<Integer> findDisappearedNumbers(int[] nums) {
         List<Integer> result = new ArrayList<>();
         //nums[i]作为temp数组的索引,设置为1,然后遍历temp数组,temp[i]为0时,存入i到list
         int[] temp = new int[nums.length+1];
         for(int i=0;i<nums.length;i++){
             temp[nums[i]] = 1;
         }
         for(int i=1;i<temp.length;i++){
             if(temp[i] == 0){
                 result.add(i);
             }
         }
         return result;
     }
    }
  5. 有序矩阵中第K小的元素:https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix/submissions/

    class Solution {
     public int kthSmallest(int[][] matrix, int k) {
         if(matrix.length == 0 || matrix[0].length == 0){
             return 0;
         }
         //降维
         int[] result = Merge(matrix,0,matrix.length-1);
         return result[k-1];
     }
    
     public int[] Merge(int[][] matrix,int start,int end){
         if(start == end){
             return matrix[start];
         }
         int middle = start + (end - start)/2;
         //分割成左右两个数组
         int[] left = Merge(matrix,start,middle);
         int[] right = Merge(matrix,middle+1,end);
         //合并左右数组
         return MergeSort(left,right);
     }
    
     public int[] MergeSort(int[] nums1,int[] nums2){
         int[] temp = new int[nums1.length + nums2.length];
         int index = 0;
         int index1 = 0;
         int index2 = 0;
         while(index1 < nums1.length && index2 < nums2.length){
             if(nums1[index1] < nums2[index2]){
                 temp[index++] = nums1[index1++];
             }else{
                 temp[index++] = nums2[index2++];
             }
         }
         while(index1 < nums1.length){
             temp[index++] = nums1[index1++];
         }
         while(index2 < nums2.length){
             temp[index++] = nums2[index2++];
         }
         return temp;
     }
    }
  6. 把数组排成最小的数:https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/

全部评论

相关推荐

2025-12-24 15:25
已编辑
门头沟学院 前端工程师
是腾讯的csig腾讯云,前天晚上九点突然打电话约面,激动的通宵学了一晚上,第二天状态很差改了今天(以后再也不通宵学习了)感觉自己浪费了面试官一个半小时单纯手写+场景,无八股无项目无算法,打击真的很大,全是在面试官提醒的情况下完成的,自己技术方面真的还是有待提高,实力匹配不上大厂和已经面试的两个公司完全不一样,很注重编码能力和解决问题的能力,然而我这两个方面都很薄弱,面试官人很好很耐心的等我写完题目,遇到瓶颈也会提醒我,写不出题也会很耐心的跟我讲解好感动,到最后面试结束还安慰我打算把下周最后一场面试面完之后就不面啦,如果能去实习还是很开心,但是最重要的还是好好努力提高技术以下是面经第一题//&nbsp;实现一个解析&nbsp;url&nbsp;参数的函数function&nbsp;parseUrl(urlStr)&nbsp;{//&nbsp;TODO}parseUrl('*********************************************');//&nbsp;返回&nbsp;{a:&nbsp;1,&nbsp;b:&nbsp;2,&nbsp;c:&nbsp;3}追问:在链接里见过什么部分?用&nbsp;hash&nbsp;路由的话放在哪第二题//&nbsp;考虑有一个异步任务要执行,返回&nbsp;Promise,这个任务可能会失败,请实现&nbsp;retry&nbsp;方法,返回新方法,可以在失败后自动重试指定的次数。/***&nbsp;异步任务重试*&nbsp;@param&nbsp;task&nbsp;要执行的异步任务*&nbsp;@param&nbsp;times&nbsp;需要重试的次数,默认为&nbsp;3&nbsp;次*/function&nbsp;retry(task,&nbsp;times&nbsp;=&nbsp;3)&nbsp;{//&nbsp;TODO:&nbsp;请实现}//&nbsp;---------------测试示例&nbsp;----------------//&nbsp;原方法const&nbsp;request&nbsp;=&nbsp;async&nbsp;(data)&nbsp;=&gt;&nbsp;{//&nbsp;模拟失败if&nbsp;(Math.random()&nbsp;&lt;&nbsp;0.7)&nbsp;{throw&nbsp;new&nbsp;Error('request&nbsp;failed');}const&nbsp;res&nbsp;=&nbsp;await&nbsp;fetch(&#39;https://jsonplaceholder.typicode.com/posts&#39;,&nbsp;{method:&nbsp;'POST',body:&nbsp;JSON.stringify(data),});return&nbsp;res.json();}//&nbsp;新的方法const&nbsp;requestWithRetry&nbsp;=&nbsp;retry(request);//&nbsp;使用async&nbsp;function&nbsp;run()&nbsp;{const&nbsp;res&nbsp;=&nbsp;await&nbsp;requestWithRetry({&nbsp;body:&nbsp;'content'&nbsp;});console.log(res);}run();第三题就是给&nbsp;retry&nbsp;函数添加类型注释,用到泛型第四题:在组件库中将&nbsp;Alert&nbsp;用&nbsp;api&nbsp;的形式实现(应该就是&nbsp;message&nbsp;这个组件)怎么渲染到一个浮层里而不是原地渲染出来
不知道怎么取名字_:技术这个东西,太杂了,而且要下功夫的
查看5道真题和解析
点赞 评论 收藏
分享
01-11 08:47
门头沟学院 Java
choumoduji...:读研的目的就是为了以最快的速度和最低的要求完成“学校”规定的毕业标准,而不是所谓课题组的要求
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务