精LintCode领扣算法问题答案:入门

Posted 二当家的白帽子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精LintCode领扣算法问题答案:入门相关的知识,希望对你有一定的参考价值。


文章目录


23. 判断数字与字母字符

描述

给出一个字符c,你需要判断它是不是一个数字字符或者字母字符。
如果是,返回true,如果不是返回false。

题解

public class Solution 
    /**
     * @param c: A character.
     * @return: The character is alphanumeric or not.
     */
    public boolean isAlphanumeric(char c) 
        // write your code here
        
        return Character.isDigit(c) || Character.isLetter(c);
    

25. 打印X

描述

输入一个正整数N, 你需要按如下方式返回一个字符串列表。

题解

public class Solution 
    /**
     * @param n: An integer.
     * @return: A string list.
     */
    public List<String> printX(int n) 
        // write your code here.
        
        List<String> ret =  new ArrayList<>();

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; ++i) 
            sb.setLength(0);
            for (int j = 0; j < n; ++j) 
                if (j == i || j == n - 1 - i) 
                    sb.append('X');
                 else 
                    sb.append(' ');
                
            
            ret.add(sb.toString());
        

        return ret;
    

37. 反转一个3位整数

描述

反转一个只有3位数的整数。

题解

public class Solution 
    /**
     * @param number: A 3-digit number.
     * @return: Reversed number.
     */
    public int reverseInteger(int number) 
		String value = new StringBuilder(number + "").reverse().toString();
		return Integer.parseInt(value);
    

145. 大小写转换

描述

将一个字符由小写字母转换为大写字母

题解

public class Solution 
    /**
     * @param character: a character
     * @return: a character
     */
    public char lowercaseToUppercase(char character) 
        // write your code here
		return (char) (character-32);
    

366. 斐波纳契数列

描述

查找斐波纳契数列中第 N 个数。

所谓的斐波纳契数列是指:

前2个数是 0 和 1 。
第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34 …

题解

public class Solution 
    /**
     * @param n: an integer
     * @return: an ineger f(n)
     */
    public int fibonacci(int n) 
        // write your code here
	switch (n) 
			case 1:
				return 0;
	//			break;
			case 2:
				return 1;
//				break;
			default:
				
					n = n - 2;
					int result = 0;
					int last2 = 0;
					int last1 = 1;
					while (n-- > 0) 
						result = last2 + last1;
						last2 = last1;
						last1 = result;
					

					return result;
				
	//			break;
		
    

454. 矩阵面积

描述

实现一个矩阵类Rectangle,包含如下的一些成员变量与函数:

两个共有的成员变量 width 和 height 分别代表宽度和高度。
一个构造函数,接受2个参数 width 和 height 来设定矩阵的宽度和高度。
一个成员函数 getArea,返回这个矩阵的面积。

题解

public class Rectangle 
    /*
     * Define two public attributes width and height of type int.
     */
    // write your code here
private int width;
private int height;
    /*
     * Define a constructor which expects two parameters width and height here.
     */
    // write your code here
    public Rectangle(int width, int height) 
        this.width = width;
        this.height = height;
    
    /*
     * Define a public method `getArea` which can calculate the area of the
     * rectangle and return.
     */
    // write your code here

    public int getArea() 
        return this.width * height;
    

463. 整数排序

描述

给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。

题解

public class Solution 
    /**
     * @param A: an integer array
     * @return: nothing
     */
    public void sortIntegers(int[] A) 
        // write your code here
		Arrays.sort(A);
    

jre自带的排序算法不一样是算法?合理合法。

466. 链表节点计数

描述

计算链表中有多少个节点.

题解

/**
 * Definition for ListNode
 * public class ListNode 
 *     int val;
 *     ListNode next;
 *     ListNode(int x) 
 *         val = x;
 *         next = null;
 *     
 * 
 */

public class Solution 
    /**
     * @param head: the first node of linked list.
     * @return: An integer
     */
    public int countNodes(ListNode head) 
        // write your code here
		int count = 0;
		while (head != null) 
			count++;
			head = head.next;
		
		return count;
    

484. 交换数组两个元素

描述

给你一个数组和两个索引,交换下标为这两个索引的数字

题解

public class Solution 
    /**
     * @param A: An integer array
     * @param index1: the first index
     * @param index2: the second index
     * @return: nothing
     */
    public void swapIntegers(int[] A, int index1, int index2) 
        // write your code here
		int t = A[index1];
		A[index1] = A[index2];
		A[index2] = t;
    

632. 二叉树的最大节点

描述

在二叉树中寻找值最大的节点并返回。

题解

/**
 * Definition of TreeNode:
 * public class TreeNode 
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) 
 *         this.val = val;
 *         this.left = this.right = null;
 *     
 * 
 */
public class Solution 
/*
	 * @param root: the root of tree
	 * @return: the max node
	 */
	public TreeNode maxNode(TreeNode root) 
		// write your code here
		return this.getMaxChild(root);
	

	private TreeNode getMaxChild(TreeNode parent) 
		if (parent == null) 
			return null;
		
		TreeNode maxLeft = parent.left;
		TreeNode maxRight = parent.right;
		if (maxLeft == null
			&& maxRight == null) 
			return parent;
		
		if (maxLeft != null) 
			maxLeft = this.getMaxChild(maxLeft);
		
		if (maxRight != null) 
			maxRight = this.getMaxChild(maxRight);
		
		if (maxLeft == null) 
			return this.max(parent, maxRight);
		
		if (maxRight == null) 
			return this.max(parent, maxLeft);
		
		return this.max(parent, this.max(maxLeft, maxRight));
	

	private TreeNode max(TreeNode node1, TreeNode node2) 
		return node1.val > node2.val ? node1 : node2;
	

1613. 最高频率的IP

描述

给定一个字符串数组lines, 每一个元素代表一个IP地址,找到出现频率最高的IP。

题解

public class Solution 
    /**
     * @param ipLines: ip  address
     * @return: return highestFrequency ip address
     */
    public String highestFrequency(String[] ipLines) 
        // Write your code here
          int maxCount = 0;
		String maxTimeIpLine = null;
		Map<String, Integer> countMap = new HashMap<String, Integer>();
		for (String ipLine : ipLines) 
			Integer count = countMap.get(ipLine);
			if (count == null) 
				count = 0;
			
			count++;
			countMap.put(ipLine, count);
			if (count > maxCount) 
				maxCount = count;
				maxTimeIpLine = ipLine;
			
		
		return maxTimeIpLine;
    

297. 寻找最大值

描述

寻找 n 个数中的最大值。

题解

public class Solution 
    /**
     * @param nums: the list of numbers
     * @return: return the maximum number.
     */
    public int maxNum(List<Integer> nums) 
        // write your code here
        
        int max = Integer.MIN_VALUE;
        for (Integer n : nums) 
            if (n > max) 
                max = n;
            
        
        return max;
    

298. 寻找素数

描述

输出n以内所有的素数。

  • 保证 n 是100以内的整数。

题解

public class Solution 
    /**
     * @param n: an integer
     * @return: return all prime numbers within n.
     */
    public List<Integer> prime(int n) 
        // write your code here

        BitSet cache = new BitSet();

        List<Integer> ret = new ArrayList<>();
        for (int i = 2; i <= n; ++i) 
            if (cache.get(i)) 
                continue;
            
            if (this.isPrime(i)) 
                ret.add(i);
            
            int t = i;
            while (t <= n - i) 
                t += i;
                cache.set(t);
            
        

        return ret;
    

    private boolean isPrime(int n) 
        for (int i = 2; i <= Math.sqrt(n); ++i) 
            if (n % i == 0) 
                return false;
            
        

        return true;
    

1910. 数组中出现次数最多的值

描述

在给定的数组中,找到出现次数最多的数字。
出现次数相同时,返回数值最小的数字。

  • 数组长度不超过100000。
  • 0 <= a[i] <= 2147483647

题解

public class Solution 
    /**
     * @param array: An array.
     * @return: An integer.
     */
    public int findNumber(int[] array) 
        // Write your code here.
        
        Map<Integer, Integer> counter     = new HashMap<>();
        int                   maxCountNum = array[0];
        int                   maxCount    = 0;

        for (int n : array) 
            int count = counter.getOrDefault(n, 0) + 1;
            counter.put(n, count);

            if (count > maxCount) 
                maxCount = count;
                maxCountNum = n;
             else if (count == maxCount && n < maxCountNum) 
                maxCountNum = n;
            
        

        return maxCountNum;
    


最后说两句

非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~

作者水平有限,如果文章内容有不准确的地方,请指正。

希望小伙伴们都能每天进步一点点。

本文由 二当家的白帽子 https://le-yi.blog.csdn.net/ 博客原创,转载请注明来源,谢谢~

以上是关于精LintCode领扣算法问题答案:入门的主要内容,如果未能解决你的问题,请参考以下文章

精LintCode领扣算法问题答案:1890. 形成最小数

精LintCode领扣算法问题答案:1892 · 扫雷

精LintCode领扣算法问题答案:1889. 区间合并

精LintCode领扣算法问题答案:1889. 区间合并

精LintCode领扣算法问题答案:1891 · 旅行计划

精LintCode领扣算法问题答案:1891 · 旅行计划