美文网首页
LeetCode算法集

LeetCode算法集

作者: 取名废同学 | 来源:发表于2019-01-05 17:02 被阅读0次

贴的题是不难的算法题,但是感觉易错易考。

1、统计所有小于非负整数 n 的质数的数量。
思路:用一个数组来存储boolean,判断是否是质数

class Solution {
    public int countPrimes(int n) {
        boolean notPrime[] = new boolean[n + 2];
        notPrime[0] = notPrime[1] = true;  //0,1为非质数
        /**
        不断地求质数*n,使其位置为非质数
        2*2=4 2*3 2*4 2*5...
        3*3=9 3*4 3*5...
        ...
        false为质数
        */
       for(int i=2;i*i<n;i++){
          if(!notPrime[i]){//如果这个数为质数
              int c=i*i;
              while(c<n){
                  notPrime[c]=true;  //该位置为非质数
                  c+=i;
              }
          }
       }
        int count=0;
        for(int i=2;i<n;i++){
            //输出质数
            if(!notPrime[i]){
                count++;
            }
        }
        return count;
    }
}

2、反转链表:做了很多次还总是做错
先判断链表是否为空
递归链表反转,再构造2个链表节点next和pre,
递归时围绕next、head.next、pre和head=?来写
最后输出的pre节点(指向最后的当前节点)。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null){
            return null;
        }
       ListNode pre=null;
        ListNode next=null;
        while(head!=null){
            next=head.next;
            head.next=pre;
            pre=head;
            head=next;
        }
        return pre;
    }
    
}

3。判断hashmap是否包含这个key:map.containsKey(key)

4、移动零
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
思路:j=0,直接遍历,找数组中非0的,然后都移到前面(利用数组中j的位置),则遍历完成j之后的到数组长度的 就都是0

class Solution {
    public void moveZeroes(int[] nums) {
       int j=0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]!=0){
                nums[j++]=nums[i];
            }
        }
        while(j<nums.length){
            nums[j++]=0;
        }
    
    }
}

相关文章

  • LeetCode算法集

    贴的题是不难的算法题,但是感觉易错易考。 1、统计所有小于非负整数 n 的质数的数量。思路:用一个数组来存储boo...

  • Swap Nodes in Pairs

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Swap Nodes in ...

  • Combination Sum II

    标签: C++ 算法 LeetCode DFS 每日算法——leetcode系列 问题 Combinatio...

  • Divide Two Integers

    标签: C++ 算法 LeetCode 每日算法——leetcode系列 问题 Divide Two Integ...

  • First Missing Positive

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 First Missing...

  • Valid Sudoku

    Valid Sudoku 标签: C++ 算法 LeetCode 每日算法——leetcode系列 问题 Val...

  • Next Permutation

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 Next Permuta...

  • Trapping Rain Water

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 Trapping Rain...

  • Combination Sum

    标签: C++ 算法 LeetCode 数组 DFS 每日算法——leetcode系列 问题 Combinat...

  • 【leetcode】打乱数组 - 经典洗牌算法

    相关资料以及注意事项: 我的LeetCode解题集GitHub地址 欢迎私信或者留言交流! 算法介绍 Knuth-...

网友评论

      本文标题:LeetCode算法集

      本文链接:https://www.haomeiwen.com/subject/jwnhlqtx.html